我正在使用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
在鼠标悬停在元素上的浏览器中,单击的元素变为可见。有没有办法检查某些东西是否可见?
答案 0 :(得分:12)
你可以通过行动来做到这一点。为了实现你想要的,使用Python Webdriver客户端,但原理是一样的。
ActionChains(driver).move_to_element(driver.find_element(By.ID, 'Foo'))\
.click(driver.find_element(By.Name, "Bar"))\
.perform()
答案 1 :(得分:4)
您最好的解决方案是不使用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();