Selenium爬蟲遇到超時TimeOut問題的解決方法
1.顯式等待
顯式等待,就是明確的要等到某個元素的出現或者是某個元素的可點選等條件,等不到,就一直等,除非在規定的時間之內都沒找到,那麼就跳出Exception.
/*** 設定元素等待時間* * @param driver* @param by* @param timeOut //等待時間,以秒為單位* */
public static void waitForLoad(WebDriver driver, final By locator, int timeOut) {
WebDriverWait wait = new WebDriverWait(driver, timeOut); // timeOut為等待時間,單位秒
wait.until(new ExpectedCondition<Boolean>() {
public Boolean apply(WebDriver d) {
boolean loadcomplete = d.findElement(locator).isDisplayed();
return loadcomplete;}});}
2.隱式等待
driver.manage().timeouts().implicitlyWait(second, TimeUnit.SECONDS); //second為等待時間,單位秒
設定driver內findElement等方法的超時時間,該設定為全域性設定,使用起來比較方便。
隱式等待, 此處的隱式等待是針對Driver 每次執行命令的 最長執行時間也可以理解為超時時間, 一些人對此處有誤解,認為是讓Driver等一段時間, 確實某些時候能讓Driver等一段時間, 但是影響是全域性的,每次Driver執行 找不到元素都會等待此處設定的時間, 假設某處將此值設定的太長,必須在執行完成之後還原回來,否則判斷一個元素是否存在的時候,就會遇到很坑爹的問題。 改進後的方法如下:
WebDriver會進行一個隱式等待,但引數只有時間,這就導致我需要什麼元素出現,我不一定能等到它,
private boolean isElementPresent(By by) {
try {
driver.manage().timeouts().implicitlyWait(1, TimeUnit.SECONDS);
driver.findElement(by);
return true;
} catch (NoSuchElementException e) {
return false;
}
}
得不到某個元素,我們就延遲一下...
3.執行緒休眠
Thread.sleep(3000); //執行緒停止3秒
相關文章
- 遇到問題的解決方法
- 分享解決SQL資料庫超時(timeout)的問題可能原因SQL資料庫
- 爬蟲過程中遇到的問題爬蟲
- 使用nodeAPI時遇到非同步問題的解決方法API非同步
- pip安裝selenium超時解決方法
- 解決代理超時問題的三種方法
- 今天遇到的問題與解決方法
- Python爬蟲程式設計常見問題解決方法Python爬蟲程式設計
- 如何利用ip住宅代理解決python爬蟲遇到反爬措施的問題?Python爬蟲
- 爬蟲常見問題及解決方式爬蟲
- 解決 nginx 反向代理時的 upstream timeout 問題Nginx
- Eclipse中使用的容器超時問題解決方法Eclipse
- 爬蟲抓取網路資料時經常遇到的六種問題爬蟲
- 解決AJAX應用,會話超時(Session Timeout)的問題,粗略方法(不考慮使用Filter的前提下)會話SessionFilter
- 裝SAP GUI時遇到的問題及解決GUI
- 解決 go get 超時問題Go
- python 高度健壯性爬蟲的異常和超時問題Python爬蟲
- websphere 應用超時問題的解決Web
- GO Modules的理解和遇到的問題解決方法Go
- 爬蟲專案常見問題及解決方案爬蟲
- 爬蟲-selenium的使用爬蟲
- 安裝sql server遇到問題解決方法SQLServer
- Python小白的爬蟲問題與解決(含程式碼)Python爬蟲
- 爬蟲IP受限的三個解決方法爬蟲
- 解決代理連線超時問題
- 部署專案遇到的mysql問題以及解決方法MySql
- 關於BGE-M3接入LangChain時遇到的問題與解決方法LangChain
- SecureCRT 超時自動斷開連線問題解決方法Securecrt
- Nginx的超時timeout配置詳解Nginx
- UG程式設計常遇到的問題及解決方法程式設計
- 安裝vCenter6.0遇到的問題以及解決方法
- nginx fastcgi 超時問題解決記錄NginxAST
- Python爬蟲之路-selenium在爬蟲中的使用Python爬蟲
- steam提示:在連線至steam伺服器時遇到問題解決方法伺服器
- mysql登入遇到ERROR 1045問題解決方法MySqlError
- 爬蟲ip代理池搭建前需解決的問題及搭建思路爬蟲
- 爬蟲必備工具,掌握它就解決了一半的問題爬蟲
- 爬蟲學習日記(九)Selenium點選事件超時 改用執行JS爬蟲事件JS