Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/python/286.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
使用python、selenium和pyvirtualdisplay单击web元素时出现问题_Python_Python 2.7_Selenium_Firefox_Pyvirtualdisplay - Fatal编程技术网

使用python、selenium和pyvirtualdisplay单击web元素时出现问题

使用python、selenium和pyvirtualdisplay单击web元素时出现问题,python,python-2.7,selenium,firefox,pyvirtualdisplay,Python,Python 2.7,Selenium,Firefox,Pyvirtualdisplay,我有一个简单的网络爬虫,它可以登录Twitter,进入下一页,然后通过点击gear图标从我所有的追随者那里获取信息(如果他们是静音的,等等)。问题是,我的新计算机上的单击功能已停止工作 另外,我正在使用Firefox()web驱动程序 以下是我正在使用的代码(您需要为Twitter添加自己的凭据才能使其正常工作): 这段代码在一台机器上运行良好,但在另一台机器上单击dom元素失败。以下是一些可能提供见解的规范 ::GOOD BOX:: pip packages - selenium 2.47.3

我有一个简单的网络爬虫,它可以登录Twitter,进入下一页,然后通过点击gear图标从我所有的追随者那里获取信息(如果他们是静音的,等等)。问题是,我的新计算机上的单击功能已停止工作

另外,我正在使用Firefox()web驱动程序

以下是我正在使用的代码(您需要为Twitter添加自己的凭据才能使其正常工作):

这段代码在一台机器上运行良好,但在另一台机器上单击dom元素失败。以下是一些可能提供见解的规范

::GOOD BOX::
pip packages
- selenium 2.47.3
- pyvirtualdisplay 0.1.5

python 2.7
firefox 41.0
lib32z-dev 1:1.2.8.dfsg-1ubuntu1
python-lxml 3.3.3-1ubuntu0.1
python-dev 2.7.5-5ubuntu3
build-essential 11.6ubuntu6

-------------------------

::BAD BOX::
pip packages
- selenium 2.53.6
- pyvirtualdisplay 0.2

python 2.7
firefox-mozilla-build 47.0.1-0ubuntu1 (not sure why I need this, the other box doesn't seem to have it.  But things break if I remove it)
firefox 47.0.1
python-dev 2.7.11-1
libxml2-dev 2.9.3+dfsg1-1ubuntu0.1
libxslt-dev (1.1.28-2.1)
build-essential 12.1ubuntu2
当我在“坏盒子”上运行此代码并且没有捕获异常时,我得到以下结果:

selenium.common.exceptions.WebDriverException: Message: Element is not clickable at point (464, 1). Other element would receive the click: <div class="container"></div>
selenium.common.exceptions.WebDriverException:消息:元素在点(464,1)处不可单击。其他元素将收到单击:

这可能是因为窗口太小,目标元素最终隐藏在另一个窗口下。尝试设置原始大小:

driver.set_window_size(1920, 1200)
如果您的元素最终隐藏在顶部横幅下,您也可以尝试更改滚动行为:

DesiredCapabilities.FIREFOX["elementScrollBehavior"] = 1 #scroll bottom instead of top
driver = webdriver.Firefox()

异常清楚地表明,其他元素将收到单击,这意味着您的实际元素被另一个元素(div)覆盖。当您要查找元素时,可能会在页面上找到仍覆盖该元素的某个进度条。因此,您需要使用WebDriverWait等待,直到元素可单击…:)我是否应该在查找之前等待元素,或在单击它之前等待?您应该在使用WebDriverWait查找元素期间等待…:)