3 回答
TA贡献1794条经验 获得超8个赞
切换到 iframe 后,我已经修复了一些 Thread.sleep 的问题。不知道为什么切换到 iframe 后和查找元素之前的显式等待失败,我将超时设置为 15 秒,并在每个元素之前构建显式等待。显然框架内的元素突然没有足够的时间来完全加载......
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贡献1784条经验 获得超9个赞
听起来您的网站已更改。在您通常测试的网站上用 Chrome 中的 F12 检查 ID,并确保它们仍然相同。
或者; 您可能会遇到典型的“我的应用程序整个周末都在运行,但现在周一早上速度很慢”延迟。
根据大约一半的错误,我唯一的另一个猜测是您不小心引用了较旧的 WebDriver,而不是使用您认为正在使用的 WebDriver。
添加回答
举报