Chromedriver 并不总是在 window 中切换
Chromedriver does not always switch in the window
我用的是这个方法:
for (String handle: driver.getWindowHandles ()) {driver.switchTo (). window (handle);}
但Chrome不总是切换。我也在等待 window title:
的值
waitDriver.until (ExpectedConditions.titleIs ("new title"));
但是,(如果我没理解错的话)Webdriver 没有在新的 window 中切换。它保留在旧的 window 中,并在相同的 window 中等待 header,而不是在新的 window 中。所以我等不及标题和 window 我需要。任何异常或正确的开关。
结果是:
Timed out after 10 seconds waiting for title to be "new titile". Current title: "old titile".
您是否尝试过 运行 调试模式?它可能会告诉您问题出在哪里。
或者尝试遵循以下逻辑(为 window 句柄创建一个 ArrayList<String>
,然后从列表中删除旧句柄。)如果这对您有用,请将其用作 util 方法并调用 where曾经需要。
:
String oldTab = driver.getWindowHandle();
try{
List<String> newTab = new ArrayList<String>(driver.getWindowHandles());
newTab.remove(oldTab);
driver.switchTo().window(newTab.get(0));
} catch (Exception e) {
Reporter.log("No new tab found!! " + "Number of tabs currently open = "+driver.getWindowHandles().size(), Base.DEBUG_MODE);
throw e; // or do whatever you wanna do here
}
如果您想创建一个静态方法来切换到新的 window 并将其放入您的实用程序,这是一种方法:
public static void switchToNewTab(WebDriver driver) throws Exception {
String oldTab = driver.getWindowHandle();
try{
List<String> newTab = new ArrayList<String>(driver.getWindowHandles());
newTab.remove(oldTab);
driver.switchTo().window(newTab.get(0));
} catch (Exception e) {
Reporter.log("No new tab found!! " + "Number of tabs currently open = "+driver.getWindowHandles().size(), Base.DEBUG_MODE);
throw e;
}
}
我用的是这个方法:
for (String handle: driver.getWindowHandles ()) {driver.switchTo (). window (handle);}
但Chrome不总是切换。我也在等待 window title:
的值waitDriver.until (ExpectedConditions.titleIs ("new title"));
但是,(如果我没理解错的话)Webdriver 没有在新的 window 中切换。它保留在旧的 window 中,并在相同的 window 中等待 header,而不是在新的 window 中。所以我等不及标题和 window 我需要。任何异常或正确的开关。 结果是:
Timed out after 10 seconds waiting for title to be "new titile". Current title: "old titile".
您是否尝试过 运行 调试模式?它可能会告诉您问题出在哪里。
或者尝试遵循以下逻辑(为 window 句柄创建一个 ArrayList<String>
,然后从列表中删除旧句柄。)如果这对您有用,请将其用作 util 方法并调用 where曾经需要。
:
String oldTab = driver.getWindowHandle();
try{
List<String> newTab = new ArrayList<String>(driver.getWindowHandles());
newTab.remove(oldTab);
driver.switchTo().window(newTab.get(0));
} catch (Exception e) {
Reporter.log("No new tab found!! " + "Number of tabs currently open = "+driver.getWindowHandles().size(), Base.DEBUG_MODE);
throw e; // or do whatever you wanna do here
}
如果您想创建一个静态方法来切换到新的 window 并将其放入您的实用程序,这是一种方法:
public static void switchToNewTab(WebDriver driver) throws Exception {
String oldTab = driver.getWindowHandle();
try{
List<String> newTab = new ArrayList<String>(driver.getWindowHandles());
newTab.remove(oldTab);
driver.switchTo().window(newTab.get(0));
} catch (Exception e) {
Reporter.log("No new tab found!! " + "Number of tabs currently open = "+driver.getWindowHandles().size(), Base.DEBUG_MODE);
throw e;
}
}