【问题标题】:Unable to click on a button which is auto-focused by a script无法单击由脚本自动聚焦的按钮
【发布时间】:2018-05-13 19:31:04
【问题描述】:

我正在尝试单击由 html 中的脚本自动聚焦的按钮。 我已经尝试过绝对路径,相对路径,但没有运气。几乎所有我能想到的。附件是一个屏幕截图,它将显示 xpath 正在网络上成功定位元素,但是当我在 selenium 中使用它时,它找不到该元素。 我还尝试使用通用函数显式等待元素 10 秒。 (查看屏幕截图)此功能适用于之前调用的所有其他按钮,但此按钮除外。

让我眼前一亮的是,有一个方法被调用,它可以自动聚焦按钮。在这种情况下,我可能不得不将焦点转向整个窗口或页面。我也试过发送回车键,但还是不行。

问题_1:有人有解决办法吗? Question_2:有谁知道如何将焦点切换到页面? Question_3:或者其他的。

非常感谢任何建议。

【问题讨论】:

  • 您是否因尝试而收到错误?也就是说,元素是否存在或者 Selenium 是否返回错误?如果 Selenium 说该元素存在、可见且已启用,您应该能够单击它。 xpath(locator) 可能没有引用提交按钮。
  • 你能用你在文本中的代码尝试更新问题吗?
  • 问题出在 iframe 上。我通过将驱动程序切换到 iframe 来使其工作。在那之后它就像一个魅力。感谢您对所有答案和建议的帮助。

标签: java html selenium selenium-webdriver functional-programming


【解决方案1】:

使用 Java 脚本单击而不是单击。像这样,希望这会有所帮助。

WebElement element = driver.findElement(By.id("SubmitButtonId"));
JavascriptExecutor executor = (JavascriptExecutor)driver;
executor.executeScript("arguments[0].click();", element);

【讨论】:

    【解决方案2】:

    要将焦点切换到父窗口/默认内容窗口,您应该在驱动程序实例上使用 switchTo() 方法。

    driver.switchTo().parentFrame();
    

    driver.switchTo().defaultContent();
    

    您可以使用以下两个语句来了解当前关注的元素。

     driver.switchTo().activeElement();
     driver.getPageSource();
    

    【讨论】:

      【解决方案3】:

      如果您尝试单击输入标签,您的脚本将失败。尝试仅找到正确的定位器。如您所说,它将有所帮助或尝试 submit() 功能,此元素是自动选择的。

      【讨论】:

        【解决方案4】:

        我认为您需要在单击之前将元素带入查看:

        代码如下: ((JavascriptExecutor) 驱动程序).executeScript("arguments[0].scrollIntoView(true)", webElement);

        【讨论】:

          猜你喜欢
          • 2019-12-29
          • 1970-01-01
          • 1970-01-01
          • 2018-10-29
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          相关资源
          最近更新 更多