ElementNotVisibleException仅在虚拟显示中

2024-09-27 22:39:19 发布

您现在位置:Python中文网/ 问答频道 /正文

我有一个脚本,需要通过硒与网页互动。我需要使用某种虚拟显示来防止浏览器出现。你知道吗

在我将Xvfb引入到混合中之前,脚本作为一个整体工作得很好。当我这样做的时候,当我第一次真正尝试与页面交互时,我会得到一个ElementNotVisibleException。你知道吗

我试过用xvfbwrapperpyvirtualdisplay来达到同样的效果。你知道吗

下面是不起作用的代码:

from xvfbwrapper import Xvfb
vdisplay = Xvfb()
vdisplay.start()
oBrowser = Browser()
oBrowser.visit(sUrl)
oBrowser.find_by_id('some_field')[0].fill(sValue)  #<--ERROR
vdisplay.stop()

下面的代码确实有效(但会显示浏览器):

oBrowser = Browser()
oBrowser.visit(sUrl)
oBrowser.find_by_id('some_field')[0].fill(sValue) #<--works every time

那么如何在虚拟显示器上运行代码呢?你知道吗

在尝试填充字段之前,我尝试过做time.sleep,但问题似乎与页面加载缓慢无关。有什么想法吗?你知道吗


Tags: 代码browser脚本idby浏览器some页面
1条回答
网友
1楼 · 发布于 2024-09-27 22:39:19

这是一种解决方法,而不是直接的解决方案:

我替换了这行:

oBrowser.find_by_id('some_field')[0].fill(sValue)

有了这个:

oBrowser.execute_script("document.getElementById('some_field').value = {}".format(sValue))

而且工作可靠。我还是不知道为什么它一开始就不起作用。你知道吗

相关问题 更多 >

    热门问题