我正在撰寫一個與我們的一個系統互動的 selenium 腳本。在我們的系統中,有一個按鈕,當按下時,只有大約一半的時間正確加載頁面(它只是在其他情況下無限長的加載時間),因此我不能依賴默認的 selenium 等待要加載的頁面。出于這個原因,我想按下按鈕,并在打開一個新視窗以繼續執行腳本之前立即關閉 Web 瀏覽器。不幸的是,我無法解決按鈕本身的問題。
我目前的代碼:
Actions action = new Actions(driver);
WebElement webElement = driver.findElement(By.id("garbage_button"));
action.moveToElement(webElement).click();
action.perform();
System.out.println("It's worked");
目前,不太可能達到 System.out,因為一旦 action.perform() 運行,頁面就會無限掛起,我的腳本最終會超時。
我嘗試過的其他事情:
WebElement.click() 代替
減少等待時間并嘗試捕獲超時例外(Chromedriver 似乎自己處理這些例外)
有沒有人對我如何無需等待就可以實作按鈕按下有任何想法?
uj5u.com熱心網友回復:
action.perform();應該action.build().perform();在Java中。
一旦你這樣做了,為什么不觸發driver.quit() 關閉窗戶呢?
或者您可以在觸發點擊時進行斷言,您可以從下一頁斷言某些內容,如果斷言通過,則測驗用例也應該通過。
但是由于您多次提到不會加載新頁面,在這種情況下,您的斷言將失敗,這應該沒問題,因為根本沒有加載實際頁面。
uj5u.com熱心網友回復:
在我們的系統中,有一個按鈕,當按下時,只有大約一半的時間正確加載頁面(它只是在其他情況下無限長的加載時間),因此我不能依賴默認的 selenium 等待要加載的頁面。
這樣做可以更快地加載頁面。這將使 Selenium WebDriver 等到初始 HTML 檔案完全加載和決議完畢,并放棄加載樣式表、影像和子幀。
ChromeOptions chromeOptions = new ChromeOptions();
chromeOptions.setPageLoadStrategy(PageLoadStrategy.EAGER);
您可以使用以下命令終止驅動程式會話。
Runtime.getRuntime().exec("taskkill /F /IM ChromeDriver.exe");
轉載請註明出處,本文鏈接:https://www.uj5u.com/qita/313860.html
