2016-07-31 6 views
2

Twitter에 로그인하고 다음 페이지로 이동 한 간단한 웹 크롤러가 있습니다. 다음 페이지로 이동 한 다음 내 팔로어 (정보가 음소거 된 경우 등)의 정보를 가져옵니다. 기어 아이콘입니다. 문제는 새 컴퓨터에서 클릭 기능이 작동하지 않는 것입니다.python, selenium 및 pyvirtualdisplay로 웹 요소를 클릭하는 데 문제가 있습니다.

또한 Firefox() 웹 드라이버를 사용하고 있습니다. 여기

내가 (트위터가 작동 얻기 위해 당신은 당신의 자신의 자격 증명을 추가해야합니다) 사용하고있는 코드입니다 : https://gist.github.com/anonymous/4c64054d01af77ae2c5c2b39a2165d80

이 코드는 하나 개의 시스템에 완벽하게 잘 작동하지만 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> 
+0

예외 분명히 다른 요소가 클릭 수단을받을 것이라고 주장한다 당신의 실제 요소는 div 요소 인 다른 요소에 의해 겹쳐집니다. 요소를 오버레이하는 페이지의 일부 진행 막대가 여전히 요소를 찾을 때 가능할 수 있습니다. 따라서 요소를 클릭 할 수있을 때까지 WebDriverWait을 사용하여 기다릴 필요가 있습니다. :) –

+0

요소를 찾기 전에 기다려야합니까, 아니면 클릭하기 전에 기다려야합니까? – Tyrick

+0

WebDriverWait를 사용하여 요소를 찾는 동안 기다려야합니다. :) –

답변

2

그것은 때문에 너무 작은 창 대상 요소가 될 수 다른 사람 밑에서 숨겨지기 시작합니다. 원래 크기를 설정하려고 :

driver.set_window_size(1920, 1200) 

당신의 요소가 상단 배너 아래에 숨겨져 끝나는 경우에도 스크롤 동작을 변경을 시도 할 수 있습니다 :

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

크기가 아무런 도움이되지 않았지만 스크롤 동작으로 해결되었습니다. – Tyrick

관련 문제