2016-07-31 14 views
2

Ich habe einen einfachen Web - Crawler, der sich bei Twitter anmeldet, geht die folgende Seite, dann ergreift Informationen von allen meinen Followern (wenn sie stummgeschaltet sind, etc) durch Klicken auf Zahnrad-Symbol. Das Problem ist, dass die Klickfunktion auf meinem neuen Computer nicht mehr funktioniert.Problem beim Klicken auf Web - Element mit Python, Selen und pyvirtualdisplay

Auch ich benutze den Firefox() Web-Treiber. Hier

ist der Code, den ich verwende: (Sie müssen Ihre eigenen Anmeldeinformationen hinzuzufügen für Twitter es zum Laufen zu bringen): https://gist.github.com/anonymous/4c64054d01af77ae2c5c2b39a2165d80

Dieser Code funktioniert völlig in Ordnung, auf einer Maschine, aber nicht ein DOM-Element klicken übereinander. Hier sind einige Spezifikationen, die einen Einblick bieten können.

::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 

Wenn ich diesen Code auf der „bad Box“ laufen und nicht die Ausnahmen fangen, bekomme ich folgendes:

selenium.common.exceptions.WebDriverException: Message: Element is not clickable at point (464, 1). Other element would receive the click: <div class="container"></div> 
+0

Ausnahme eindeutig fest, dass ein anderes Element klicken Mittel erhalten würde Ihr aktuelles Element wird von einem anderen Element überlagert, das div ist. Es könnte möglich sein, wenn Sie ein Element finden, einen Fortschrittsbalken auf der Seite, die das Element überlagert. Sie müssen also mit WebDriverWait warten, bis das Element anklickbar ist ... :) –

+0

Sollte ich warten, bevor Sie das Element finden, oder warten, bevor Sie es anklicken? – Tyrick

+0

Sie sollten während der Suche Element mit WebDriverWait warten ... :) –

Antwort

2

Es aufgrund eines Fensters sein könnte zu klein, wo das Zielelement endet unter einem anderen. Versuchen Sie, die Originalgröße zu setzen:

driver.set_window_size(1920, 1200) 

Sie könnten auch versuchen, das Scroll-Verhalten zu ändern, wenn Ihr Element unter dem oberen Banner versteckt endet:

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

Die Größe hat nicht geholfen, aber das Scroll-Verhalten behoben !!! – Tyrick