Selenium:如何使WebDriver忽略"Element is not visible"错误?



我使用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

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

可以通过动作来实现。要实现你想要的,使用Python Webdriver客户端,但原理是一样的。

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

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

建立你的元素,你也可以使用RenderedWebElement,它有一个hover()方法,这样你就不需要创建下面的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();

最新更新