【问题标题】:WebDriver JavaScriptExecutor not clicking on buttonWebDriver JavaScriptExecutor 没有点击按钮
【发布时间】: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 - 您通常不会在 &lt;a&gt; 标记中嵌套 &lt;button&gt;
  • HTML 中的 id 是 listing-step1,但在您的 C# 代码中是 listingstep1,当您将代码放在这里时,这是一个真正的代码问题或复制/粘贴问题。
  • 无法识别的元素不会抛出空引用异常。您的代码中的其他地方有问题。您应该花一些时间来调试您的代码并确定更多正在发生的事情。完成后,编辑您的问题并添加这些详细信息。添加更多您尝试过的代码示例。该页面的链接会很有帮助。

标签: javascript c# selenium-webdriver


【解决方案1】:

试试这个,

JavascriptExecutor js = (JavascriptExecutor) driver;
js.executeScript("arguments[0].click();", driver.findElement(By.id('listing-step1')));

【讨论】:

    【解决方案2】:

    要在按钮上调用Click(),文本为NEXT,您需要诱导WebDriverWait,您可以使用以下代码块:

    new WebDriverWait(driver, TimeSpan.FromSeconds(10)).Until(ExpectedConditions.ElementToBeClickable(By.XPath("//button[@class='mdl-button md-min mdl-color--blue mdl-color-text--white mdl-js-button mdl-button--raised mdl-js-ripple-effect']//span[@class='mdl-button__ripple-container']/span[@class='mdl-ripple']"))).Click();
    

    【讨论】:

    • 这是我通常做的,但在这种情况下它没有帮助 - 谢谢。我在其他所有对象上都使用该方法,并且效果很好。我认为这可能与按钮嵌套在 标记中的事实有关。开发人员将对其进行更改,我会看看是否可行。
    • @MichaelPiraner 有很多方法可以解决您面临的问题,并且根据观察决定要遵循的步骤。如果您可以使用最新的代码试验和错误堆栈跟踪更新问题,我们可以确定解决方案。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2022-01-28
    • 2016-08-06
    • 2015-04-25
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多