我在应用程序中单击一个登录按钮,这会导致打开新标签页,但是Chrome仍然可以在旧标签页上运行新标签页ChromeDriver
的内容。
问题::如何使ChromeDriver
“跟随”新打开的标签页,以便我可以与其中的元素进行交互?
答案 0 :(得分:1)
您只需要切换到新标签。
默认情况下,硒驱动程序将保留在该驱动程序打开的第一个选项卡上。
Selenium使用这两种方法来处理它。
因此,您需要将所有选项卡存储在变量中,并一一处理。
请参见以下示例。
//I am using a set string "allWindowHandles1" to store all the tabs.
//I am using a simple string "handle1 " to handle the tabs one by one[if present]
//You can use the below for each loop in future if there is multiple child windows also
Set<String> allWindowHandles1 = driver.getWindowHandles();
for(String handle1 : allWindowHandles1) {
Thread.sleep(2000);
driver.switchTo().window(handle1);
//You can write your code to handle the elements in the child window here
//Now the driver will be in your child window
Thread.sleep(2000);
}
答案 1 :(得分:1)
当您使用硒打开另一个选项卡时,即使它打开了另一个选项卡,它仍将在父选项卡(get方法内部/在get方法中调用的那个)上运行,以便在子选项卡(新打开的选项卡)上运行),您需要这样做
/dbfs/tmp/
答案 2 :(得分:1)
String winHandleNew = driver.getWindowHandle();
//Go through loop to get handle of newest window opened
for(String winHandle : driver.getWindowHandles()){
winHandleNew = winHandle;
}
// Switch to newest window opened
driver.switchTo().window(winHandleNew);
答案 3 :(得分:0)
您需要先进行切换,使用.switchTo().window
:
//handle original window
String original = driver.getWindowHandle();
//do something here to bring new window
btn.click();
for(String handle: driver.getWindowHandles()) {
driver.switchTo().window(handle);
if(!driver.getWindowHandle().equals(original)) {
//perform with new window
}
}
//back to original window
driver.switchTo().window(original);
使用上述代码,您可以再次切换到原始窗口。