我正在尝试单击具有文本克隆概念的范围。以下是html
<ul class="context-menu-list context-menu-root" style="width: 210px; top: 500px; left: 231px; z-index: 2;"> <li class="context-menu-item"> <li class="context-menu-item"> <li class="context-menu-item disabled"> <li class="context-menu-item"> <li class="context-menu-item icon icon-evn-icon-clone-concept"> <span>Clone concept</span> </li> <li class="context-menu-item"> <li class="context-menu-item icon icon-delete disabled"> </ul>
我使用的javascript代码是:
driver.findElement(By.xpath("//span[text()='Clone concept']")).click();
我确认这是通过Firepath的元素的正确选择。
我还确保按照链接可见该元素。如何强制SeleniumWebDriver单击当前不可见的元素?
这是 计算的CSS
font-family Verdana,?Arial,?Helvetica,?sans-serif .context-menu-list Verdana,?Arial,?Helvetica,?sans-serif jquery...enu.css (line 15) body Arial,?Helvetica,?sans-serif swa.css (line 3) font-size 11px .context-menu-list 11px jquery...enu.css (line 15) list-style-type none .context-menu-list none jquery...enu.css (line 15)
还尝试了以下代码:
WebElement foo = driver.findElement(By.xpath("//span[text()='Clone concept']")); Actions bar = new Actions(driver); bar.click(foo).perform();
异常: org.openqa.selenium.ElementNotVisibleException:元素当前不可见,因此可能无法与命令持续时间或超时进行交互:30.04秒构建信息:版本:‘2.24.1’,修订版:‘17205’,时间:‘2012 -06-19 16:53:24’系统信息:os.name:’Windows 7’,os.arch:’amd64’,os.version:‘6.1’,java.version:‘1.7.0’驱动程序信息: driver.version:RemoteWebDriver
任何帮助将不胜感激。
对于那些被困在这里的人来说,另一个技巧是: 暂时,我已经能够通过将这个巨大的测试用例拆分为更简单的测试用例来向前迈进。
不幸的是,Webdriver似乎并不擅长处理问题中所述的情况。不过,您有两种选择。使用JavaScript模拟点击:
JavascriptLibrary jsLib = new JavascriptLibrary(); jsLib.callEmbeddedSelenium(selenium,"triggerMouseEventAt", elementToClick,"click", "0,0");
要么
((JavascriptExecutor) driver).executeScript("arguments[0].click();", elementToClick);
或者,您可以使用动作来尝试单击菜单链中的所有元素。不幸的是,我发现这是不可靠的。
我有一个脚本,可以检测菜单链中是否存在某个元素,如果按所需顺序单击该元素,最后可以单击用户想要的那个元素(如果需要),我可以将其张贴在某个地方,但是它不美观或短。