【发布时间】:2018-05-29 20:59:11
【问题描述】:
我正在使用带有 C# 和 NUnit 的 Selenium WebDriver。
被测应用程序有一个 Selenium 无法识别的按钮。我已经尝试了所有常用的定位器,包括各种 XPath 语句、Id、CSSSelector 等。在所有情况下,都会出现 NullReferenceException。
然后我尝试了以下方法:
IJavaScriptExecutor javaScript = (IJavaScriptExecutor)Driver.Instance;
javaScript.ExecuteScript("document.getElementById('listingstep1').click();
这也会产生NullReferenceException。可以单击应用程序中的其他按钮而不会出错。
这个特殊的按钮如下:
<div class="space-top-4 mdl-layout__canvas-action-hide-sm">
<a id="listing-step1" href="javascript:void(0)">
<button class="mdl-button md-min mdl-color--blue mdl-color-text--white mdl-js-button mdl-button--raised mdl-js-ripple-effect" data- upgraded=",MaterialButton,MaterialRipple">
NEXT
<span class="mdl-button__ripple-container">
<span class="mdl-ripple"></span>
</span>
</button>
</a>
</div>
【问题讨论】:
-
在我看来这不是有效的 html - 您通常不会在
<a>标记中嵌套<button> -
HTML 中的 id 是
listing-step1,但在您的 C# 代码中是listingstep1,当您将代码放在这里时,这是一个真正的代码问题或复制/粘贴问题。 -
无法识别的元素不会抛出空引用异常。您的代码中的其他地方有问题。您应该花一些时间来调试您的代码并确定更多正在发生的事情。完成后,编辑您的问题并添加这些详细信息。添加更多您尝试过的代码示例。该页面的链接会很有帮助。
标签: javascript c# selenium-webdriver