当前位置: 首页 > 知识库问答 >
问题:

如何避免“元素当前不可见,因此可能无法与”Selenium WebDrive交互

阎晗日
2023-03-14

我正在使用selenium webdriver 2.210 JAVA进行测试。我有一个选择gmail中所有邮件的示例代码。但当我试图在通过webdriver获取URL后延迟5秒时,代码抛出“元素当前不可见,因此可能无法与之交互”错误。是否有可能使此代码延迟工作?

    driver.get("https://mail.google.com/mail/u/0/?shva=1#all");
        delay(5);  ////*......Working fine without this...........*////
    driver.switchTo().frame(driver.findElement(By.id("canvas_frame")));
driver.findElement(By.xpath("//div[@class = 'T-Jo-auh']")).click();

预先感谢

共有3个答案

刘瑞
2023-03-14

或者,您可以使用Selenium中提供的JavascriptExecitor类。完成此操作后,您可以执行任何JavaScript来操作网页上的DOM。

ref::http://selenium . Google code . com/SVN/trunk/docs/API/Java/org/open QA/selenium/JavaScript executor . html

郎鸿
2023-03-14

以下是您可以采取的解决问题的摘要(量角器/Javascript 中的示例):

>

  • 最大化浏览器窗口(在Chrome Mac上,目前您必须采取不同的方式):

    browser.driver.manage().window().maximize();
    

    确认没有其他元素与定位器匹配。如果存在与定位器匹配的另一个元素实际上不可见,则会出现此错误。

    等待元素可单击:

    var EC = protractor.ExpectedConditions,
        elm = element(by.id("myid"));
    
    browser.wait(EC.elementToBeClickable(elm), 5000);
    

    滚动到元素的视图:

    var elm = element(by.id("myid"));
    browser.executeScript("arguments[0].scrollIntoView();", elm);
    

    通过javascript单击:

    var elm = element(by.id("myid"));
    browser.executeScript("arguments[0].click();", elm);
    

    移动到元素并通过“浏览器操作”单击:

    var elm = element(by.id("myid"));
    browser.actions()
        .mouseMove(elm)
        .click()
        .perform();
    

  • 梁韬
    2023-03-14

    您确定您正在查看正确的元素吗?我遇到了一个类似的问题,结果页面上有两个类似的元素,一个可见,另一个不可见。FindElement函数正在返回不可见的那个。

    我通过使用FindElements而不是FindElement解决了这个问题,然后使用Linq提取可见的元素。

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

    • 问题内容: 我正在尝试单击具有文本克隆概念的范围。以下是html 我使用的javascript代码是: 我确认这是通过Firepath的元素的正确选择。 我还确保按照链接可见该元素。如何强制SeleniumWebDriver单击当前不可见的元素? 这是 计算的CSS 还尝试了以下代码: 异常: org.openqa.selenium.ElementNotVisibleException:元素当前不

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

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

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

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