【问题标题】:Selenium: How can I make WebDriver ignore "Element is not visible" error?Selenium:如何让 WebDriver 忽略“元素不可见”错误?
【发布时间】:2011-11-12 12:44:36
【问题描述】:

我正在使用 Selenium WebDriver (v2.5.0)。当我使用 driver.click(...)" 命令时出现此错误

Element is not currently visible and so may not be interacted with Build info: version: '2.5.0', revision: '13516', time: '2011-08-23 18:30:44' System info: os.name: 'Linux', os.arch: 'amd64', os.version: '2.6.38-10-generic', java.version: '1.6.0_26' Driver info: driver.version: RemoteWebDriver

在浏览器中,当我将鼠标悬停在某个元素上时,被单击的元素变为可见。有什么方法可以检查某些东西是否可见?

【问题讨论】:

    标签: selenium selenium-webdriver


    【解决方案1】:

    您可以通过操作来做到这一点。实现你想要的,使用Python Webdriver客户端,但原理是一样的。

    ActionChains(driver).move_to_element(driver.find_element(By.ID, 'Foo'))\
      .click(driver.find_element(By.Name, "Bar"))\
      .perform()
    

    【讨论】:

    • 我已经找到了元素。而不是 .send_keys,我该怎么做才能强制它?
    【解决方案2】:

    您最好的解决方案是不使用 click() 方法,而是实现 Actions 并让 selenium(通过 webdriver)模拟鼠标在元素上移动以激活事件,然后使元素可点击/启用。激活元素后,根据需要执行 click() 方法。我假设该元素被禁用,使其首先不可点击。

    创建您的元素,您也可以使用具有 hover() 方法的 RenderedWebElement,然后您不需要创建以下 Actions 对象,但它可能无法工作,具体取决于应用程序是如何使用本机事件设计的。尝试两者,看看哪个效果最好,最优雅。

    WebElement element = driver.findElement(By.id("element_id"));
    

    创建一个由 webdriver 支持的新 actions 对象

    Actions actions = new Actions(driver);
    

    将光标移动到元素上 - 这将“激活”您的元素以使其可点击

    actions.moveToElement(element).perform();
    

    验证元素现在是否可点击或“启用”

    assertThat(element.isEnabled());
    

    现在执行点击动作

    element.click();
    

    【讨论】:

      猜你喜欢
      • 2017-08-20
      • 2017-11-10
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2015-05-03
      • 2017-01-31
      • 1970-01-01
      相关资源
      最近更新 更多