3 回答

TA貢獻(xiàn)1794條經(jīng)驗(yàn) 獲得超8個(gè)贊
切換到 iframe 后,我已經(jīng)修復(fù)了一些 Thread.sleep 的問題。不知道為什么切換到 iframe 后和查找元素之前的顯式等待失敗,我將超時(shí)設(shè)置為 15 秒,并在每個(gè)元素之前構(gòu)建顯式等待。顯然框架內(nèi)的元素突然沒有足夠的時(shí)間來完全加載......
public static void switchToIFramesOfSearchPage() {
wait.until(ExpectedConditions.presenceOfAllElementsLocatedBy(By.cssSelector(GENERAL_IFRAME_CSS_LOCATOR_VALUE)));
driver.switchTo().frame(SEARCH_PAGE_IFRAME1_ID_LOCATOR_VALUE);
driver.switchTo().frame(SEARCH_PAGE_IFRAME2_ID_LOCATOR_VALUE);
try {
Thread.sleep(500);
} catch (InterruptedException e) {
e.printStackTrace();
}
}
public static void switchToIFrameOfToolbar() {
wait.until(ExpectedConditions.presenceOfAllElementsLocatedBy(By.cssSelector(GENERAL_IFRAME_CSS_LOCATOR_VALUE)));
driver.switchTo().frame(TOOLBAR_IFRAME_ID_LOCATOR_VALUE);
try {
Thread.sleep(500);
} catch (InterruptedException e) {
e.printStackTrace();
}
}
public static void switchToIframeOfActivitiesPane(){
wait.until(ExpectedConditions.presenceOfAllElementsLocatedBy(By.cssSelector(GENERAL_IFRAME_CSS_LOCATOR_VALUE)));
driver.switchTo().frame(ACTIVITIES_PANE_IFRAME_ID_LOCATOR_VALUE);
try {
Thread.sleep(750);
} catch (InterruptedException e) {
e.printStackTrace();
}
}
public static void switchToIFrameOfHistoryPane() {
wait.until(ExpectedConditions.presenceOfAllElementsLocatedBy(By.cssSelector(GENERAL_IFRAME_CSS_LOCATOR_VALUE)));
driver.switchTo().frame(HISTORY_PANE_IFRAME_ID_LOCATOR_VALUE);
try {
Thread.sleep(1000);
} catch (InterruptedException e) {
e.printStackTrace();
}
}
public static void switchToIFrameOfImportantView(){
wait.until(ExpectedConditions.presenceOfAllElementsLocatedBy(By.cssSelector(GENERAL_IFRAME_CSS_LOCATOR_VALUE)));
driver.switchTo().frame(IMPORTANT_VIEW_IFRAME_ID_LOCATOR_VALUE);
try {
Thread.sleep(1000);
} catch (InterruptedException e) {
e.printStackTrace();
}
}
public static void switchToIFrameOfAccountView(){
wait.until(ExpectedConditions.presenceOfAllElementsLocatedBy(By.cssSelector(GENERAL_IFRAME_CSS_LOCATOR_VALUE)));
driver.switchTo().frame(ACCOUNT_VIEW_IFRAME_ID_LOCATOR_VALUE);
try {
Thread.sleep(1000);
} catch (InterruptedException e) {
e.printStackTrace();
}
}

TA貢獻(xiàn)1765條經(jīng)驗(yàn) 獲得超5個(gè)贊
您只需要使用顯式或隱式等待。元素在頁面上可用,但無法通過 Selenium 訪問,因此您必須等到它可供訪問。

TA貢獻(xiàn)1784條經(jīng)驗(yàn) 獲得超9個(gè)贊
聽起來您的網(wǎng)站已更改。在您通常測試的網(wǎng)站上用 Chrome 中的 F12 檢查 ID,并確保它們?nèi)匀幌嗤?/p>
或者;?您可能會遇到典型的“我的應(yīng)用程序整個(gè)周末都在運(yùn)行,但現(xiàn)在周一早上速度很慢”延遲。
根據(jù)大約一半的錯(cuò)誤,我唯一的另一個(gè)猜測是您不小心引用了較舊的 WebDriver,而不是使用您認(rèn)為正在使用的 WebDriver。
添加回答
舉報(bào)