selenium webdriver:org.openqa.selenium.ElementNotVisibleException:元素当前不可见,因此可能无法与之交互

use*_*365 8 selenium webdriver

我试图点击文本克隆概念的跨度.以下是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>
Run Code Online (Sandbox Code Playgroud)

我使用的javascript代码是:

driver.findElement(By.xpath("//span[text()='Clone concept']")).click();
Run Code Online (Sandbox Code Playgroud)

我通过firepath验证了这是元素的权利.

我还确保元素是可见的链接如何强制Selenium WebDriver点击当前不可见的元素?

这是计算的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)
Run Code Online (Sandbox Code Playgroud)

还尝试了以下代码:

WebElement foo = driver.findElement(By.xpath("//span[text()='Clone concept']"));
Actions bar = new Actions(driver);
bar.click(foo).perform(); 
Run Code Online (Sandbox Code Playgroud)

例外: 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

任何帮助将不胜感激.

对于那些被困在这里的人来说是另一个黑客攻击:
目前我已经能够通过将这个巨大的测试用例分成更简单的测试用例来推进.

Jam*_*mes 12

不幸的是,Webdriver在处理问题中描述的情况时似乎不太好.你有几个选择.使用Javascript模拟一下:

JavascriptLibrary jsLib = new JavascriptLibrary(); 
jsLib.callEmbeddedSelenium(selenium,"triggerMouseEventAt", elementToClick,"click", "0,0");
Run Code Online (Sandbox Code Playgroud)

要么

((JavascriptExecutor) driver).executeScript("arguments[0].click();", elementToClick);
Run Code Online (Sandbox Code Playgroud)

或者,您可以使用操作单击菜单链中的所有元素.不幸的是,我发现这是不可靠的.

我有一个脚本,它检测一个元素是否在一个菜单链中,如果它按所需的顺序点击它们,最后点击用户想要的那个,如果你想要它我可以在某处发布但它不漂亮或短.