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

元素当前不可见,因此可能无法与[Selenium WebDrive Python]交互

闽高峯
2023-03-14

我正在实现一个脚本,使用SeleniumWebDriver和Python来抓取一些网页,但我有一个特别的问题。在某一点上,我应该获取一个输入元素并发送一个键,在我的本地PC上,脚本运行良好,而在我的服务器上,这个元素的结果是不可见的。页面的HTML部分是:

<div class="class1" style="width: 309px;">
   <div class="sPb-a">
      <div class="class2" style="display: none;" aria-hidden="true">
         www.lol.com
      </div>
   <input class="class3" type="text" dir="ltr" style="width: 301px;"></input>
   </div>
   <div></div>
</div>

在Python中,这是我的代码:

elem = browser.find_element_by_xpath("//input[@style='width: 301px;']")
elem.clear()
time.sleep(1)
elem.send_keys('lol')
time.sleep(1)

但是当我在元素上调用方法Clear时,脚本会捕获以下错误:

Element is not currently visible and so may not be interacted with
Stacktrace:
at fxdriver.preconditions.visible (file:///tmp/tmpma637_/extensions/fxdriver@googlecode.com/components/command-processor.js:9982)
at DelayedCommand.prototype.checkPreconditions_ (file:///tmp/tmpma637_/extensions/fxdriver@googlecode.com/components/command-processor.js:12626)
at DelayedCommand.prototype.executeInternal_/h (file:///tmp/tmpma637_/extensions/fxdriver@googlecode.com/components/command-processor.js:12643)
at DelayedCommand.prototype.executeInternal_ (file:///tmp/tmpma637_/extensions/fxdriver@googlecode.com/components/command-processor.js:12648)
at DelayedCommand.prototype.execute/< (file:///tmp/tmpma637_/extensions/fxdriver@googlecode.com/components/command-processor.js:12590)

我还想补充两个信息:

  • 只有一个元素的宽度:301px,如果我尝试以其他方式捕获元素,也会发生此错误,因此此元素是唯一的
  • 我的本地PC(脚本运行良好的地方)和我的服务器(有问题的地方)之间的配置是相同的(python版本、selenium版本、浏览器版本、操作系统版本)

你知道有什么解决办法吗?多谢了

共有1个答案

樊运乾
2023-03-14

我可以想到一些可能值得检查的事情。您可能需要等待更长时间才能加载页面。我在测试中遇到了一些服务器延迟问题,导致某些事情失败,因此值得检查。

人们经常遇到的另一件事在这里讨论。有时,当某个元素在浏览器窗口中不可见时,WebDriver将无法找到它。这里有一些用于滚动浏览器窗口的代码片段(链接中使用Java,但切换到Python应该相当简单)。只需在使用<code>find_element_by_xpath()

 类似资料:
  • 我需要选择列表中的最后一项。下面的代码显示了该元素当前不可见的消息。如何解决这个问题? 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

  • 我想抓取谷歌playstore搜索结果完全呈现的网页。 完全呈现的页面具有所有搜索项,而未呈现的页面仅具有20项。(请参阅https://play.google.com/store/search?q=best 我试图用selenium抓取页面,但得到了下面的错误信息。 以下代码由Selenuim IDE编写。 我认为出现错误是因为谷歌商店搜索结果页面有“显示更多”按钮,当它满足某些特定条件时会显示