2015-11-02 30 views
1

當前我正在寫一個可以在無限循環中工作的Web刮取器。它獲取一個頁面,搜索一些按鈕並單擊其中一個按鈕。但有時它不會!我保存了屏幕截圖,以防某些失敗,並且顯示該頁面在點擊按鈕後沒有改變。Selenium驅動程序有時不點擊元素

driver.find_element_by_xpath('//input[@name = "btn"]').click() 
time.sleep(3) 

我已經繞過這個循環檢查我們是否看到該元素仍然存在。

while driver.find_elements_by_xpath('//input[@name = "Submit"]') != []: 
    driver.find_element_by_xpath('//input[@name = "Submit"]').click() 

但希望找到一個根本原因。它可能是什麼?

+0

確保您在點擊前後等待(例如明確等待)適當的時間。 –

+0

我想你需要適當的等待來加載頁面?或使用預期的合同? – SIslam

+0

頁面加載成功和完全 - 我可以找到任何我需要的元素。我使用time.sleep等待2-3秒來延遲一些時間,但是我應該使用一些硒等待函數還是其他的? – academica

回答

0

我也面臨與我的應用程序類似的問題。通過操作類單擊元素爲我工作。 這裏是Java中的示例代碼:

WebElement webElement = driver.findElement(By.id("Your ID Here")); 
Actions builder = new Actions(driver); 
builder.moveToElement(webElement).click(webElement); 
builder.perform(); 

如果有動作類點擊不工作,你也可以嘗試一下的JavaScript元素。

WebElement webElement = driver.findElement(By.id("Your ID here")); 
JavascriptExecutor executor = (JavascriptExecutor) driver; 
executor.executeScript("arguments[0].click();", webElement); 
+0

謝謝你的迴應。你能告訴你使用哪個webdriver嗎? – academica

+0

我用了chromedriver – Nitesh

相關問題