当前位置: 首页 > 面试题库 >

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

芮岳
2023-03-14
问题内容

我正在尝试单击具有文本克隆概念的范围。以下是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);

或者,您可以使用动作来尝试单击菜单链中的所有元素。不幸的是,我发现这是不可靠的。

我有一个脚本,可以检测菜单链中是否存在某个元素,如果按所需顺序单击该元素,最后可以单击用户想要的那个元素(如果需要),我可以将其张贴在某个地方,但是它不美观或短。



 类似资料:
  • 我需要选择列表中的最后一项。下面的代码显示了该元素当前不可见的消息。如何解决这个问题? HTML: 列表的屏幕截图。该列表有一个搜索字段,用户可以在其中输入前缀以缩小搜索范围。

  • 问题内容: 我正在尝试在Selenium Web驱动程序脚本下执行,但是几次(并非所有时间)都出现错误。有时在循环中第一次迭代,有时在2次迭代中,有时没有启动循环。它打印所有可用项目的计数正确,但是乳清试图单击项目,显示 问题答案: 终于这对我有用。元素当前不可见,因此可能无法与之交互。 最初,这就像测试只成功了5次中的2次一样。不确定有时如何运作,其他人则无法运作。 通过减少IE中的安全设置来工

  • 我正在尝试在下面执行硒Web驱动程序脚本,但是我正在获得(不是所有时间)。有时在第一次迭代的循环中,有时在2次迭代中,有时没有启动循环。它正确打印所有可用的项目计数,但乳清试图点击项目,它显示

  • 这是我项目中的弹出窗口,我遇到了点击“我准备好返回注册主页”链接的问题。我是按id定位的 它抛出错误“元素当前不可见,因此可能无法与元素交互”][1] [1]:http://i.stack.imgur.com/sbjJb.png

  • 我正在编写脚本,使用selenium将我的ssh密钥添加到bitket的部署密钥中。直到行 工作正常,但当弹出窗口出现时,我想在特定字段中输入键 它抛出此错误 元素当前不可见,因此可能无法与之交互。我在谷歌上搜索了这个。我开始知道,首先我需要转到此弹出窗口,然后我将能够将值传递给相应的元素。我不知道该怎么做。 请帮助我如何专注于新的弹出窗口。我也使用了时间睡眠(10),但它仍然不适合我。

  • 我正在实现一个脚本,使用SeleniumWebDriver和Python来抓取一些网页,但我有一个特别的问题。在某一点上,我应该获取一个输入元素并发送一个键,在我的本地PC上,脚本运行良好,而在我的服务器上,这个元素的结果是不可见的。页面的HTML部分是: 在Python中,这是我的代码: 但是当我在元素上调用方法Clear时,脚本会捕获以下错误: 我还想补充两个信息: 只有一个元素的宽度:301