日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程资源 > 编程问答 >内容正文

编程问答

selenium的三种等待时间

發布時間:2023/12/10 编程问答 22 豆豆
生活随笔 收集整理的這篇文章主要介紹了 selenium的三种等待时间 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.
//隱式等待(20秒以內沒哥一段時間就會去找元素,如果沒找大也不會報錯,過了20s才會報錯)//driver.manage().timeouts().implicitlyWait(20, TimeUnit.SECONDS);//顯示等待WebDriverWait wait = new WebDriverWait(driver,10);wait.until(ExpectedConditions.presenceOfElementLocated(By.id("test")));
//線程等待 Thread.sleep(2000);

參考:https://www.cnblogs.com/linxinmeng/p/6930197.html

?

selenium 找不到元素 (顯式等待 和隱式等待的區別)

selenium自動化頁面元素不存在異常發生的原因有一下幾點:

(1)頁面加載時間過慢,需要查找的元素程序已經完成但是頁面還未加載成功。此時可以加載頁面等待時間。

(2)查到的元素沒有在當前的iframe或者frame中。此時需要切換至對應的iframe或者frame中才行。

?(3)元素錯誤。

解決頁面加載時間所引起的元素找不到,我們可以為頁面設置加載時間。時間的設置分為以下三種:

(1)顯式等待

顯示等待是針對于某個特定的元素設置的等待時間,如果在規定的時間范圍內,沒有找到元素,則會拋出異常,如果在規定的時間內找到了元素,則直接執行,即找到元素就執行相關操作。

public static void main(String[] args) throws IOException {

System.setProperty("webdriver.chrome.driver", "D:/chromedriver_win32/chromedriver.exe");
ChromeOptions Options = new ChromeOptions();
Options.addArguments("user-data-dir=C:\\Users\\happy\\AppData\\Local\\Google\\Chrome\\User Data");
WebDriver driver = new ChromeDriver(Options);
try {

WebDriverWait wait = new WebDriverWait(driver, 10, 1);
// 每隔1秒去調用一下until中的函數,默認是0.5秒,如果等待10秒還沒有找到元素 。則拋出異常。
wait.until(new ExpectedCondition<WebElement>() {

@Override
public WebElement apply(WebDriver driver) {
driver.findElement(By.id("kw"));

return driver.findElement(By.id("kw"));
}

}).sendKeys("我是一個自動化測試小腳本");

} finally {
driver.close();
Runtime.getRuntime().exec("taskkill /F /im " + "chromedriver.exe");
Runtime.getRuntime().exec("taskkill /F /im " + "chrome.exe");
}
}

(2)隱式等待

隱式等待是設置的全局等待,分為1、頁面加載超時等待 ;2、頁面元素加載超時;3、異步腳本超時

如果是頁面元素超時,設置等待時間,是對頁面中的所有元素設置加載時間。隱式等待是其實可以理解成在規定的時間范圍內,瀏覽器在不停的刷新頁面,直到找到相關元素或者時間結束。

public static void main(String[] args) throws IOException {

System.setProperty("webdriver.chrome.driver", "D:/chromedriver_win32/chromedriver.exe");
ChromeOptions Options = new ChromeOptions();
Options.addArguments("user-data-dir=C:\\Users\\happy\\AppData\\Local\\Google\\Chrome\\User Data");
WebDriver driver = new ChromeDriver(Options);

try {
//頁面加載超時時間設置為5s
driver.manage().timeouts().pageLoadTimeout(5, TimeUnit.SECONDS);
driver.get("https://www.baidu.com/");
//定位對象時給10s 的時間, 如果10s 內還定位不到則拋出異常
driver.manage().timeouts().implicitlyWait(10, TimeUnit.SECONDS);
driver.findElement(By.id("kw")).sendKeys("隱式等待");
//異步腳本的超時時間設置成3s
driver.manage().timeouts().setScriptTimeout(3, TimeUnit.SECONDS);

} finally {
driver.close();
Runtime.getRuntime().exec("taskkill /F /im " + "chromedriver.exe");
Runtime.getRuntime().exec("taskkill /F /im " + "chrome.exe");
}
}

(3)線程等待

線程等待是java語言中的線程類Thread類中的sleep()方法。此等待是很死板的,需要等待時間結束才會執行相關代碼。該方法需要拋出InterruptedException 異常。一般不建議使用,但是在彈窗處理,可以優先選擇線程等待。

public static void main(String[] args) throws IOException, InterruptedException {

System.setProperty("webdriver.chrome.driver", "D:/chromedriver_win32/chromedriver.exe");
ChromeOptions Options = new ChromeOptions();
Options.addArguments("user-data-dir=C:\\Users\\happy\\AppData\\Local\\Google\\Chrome\\User Data");
WebDriver driver = new ChromeDriver(Options);

try {

Thread.sleep(5000);
driver.findElement(By.id("kw")).sendKeys("線程等待");
} finally {
driver.close();
Runtime.getRuntime().exec("taskkill /F /im " + "chromedriver.exe");
Runtime.getRuntime().exec("taskkill /F /im " + "chrome.exe");
}
}

轉載于:https://www.cnblogs.com/tarrying/p/9681991.html

總結

以上是生活随笔為你收集整理的selenium的三种等待时间的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。