【问题标题】:ElementNotVisibleException only in virtual displayElementNotVisibleException 仅在虚拟显示中
【发布时间】:2016-02-24 16:02:59
【问题描述】:

我有一个脚本需要通过 selenium 与网页交互。我需要使用某种虚拟显示器来防止浏览器出现。

在我将 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,但问题似乎与页面加载缓慢无关。有什么想法吗?

【问题讨论】:

标签: python selenium xvfb splinter


【解决方案1】:

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

我替换了这一行:

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

有了这个:

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

而且它工作可靠。不过,我仍然不确定为什么它一开始就不起作用。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2022-10-23
    • 1970-01-01
    • 1970-01-01
    • 2020-10-09
    • 2017-07-16
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多