2015-11-02 62 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

相关问题