我正在尝试切换标签并通过导航到网址“http://toolsqa.com/”,然后导航到演示网站 - >进行操作。电子商务演示网站。点击此链接后,将打开同一浏览器中包含网址“http://store.demoqa.com/”的新标签页。在这里,我尝试了很多方法将焦点切换到新打开的选项卡。但是无法做到这一点,在尝试在新选项卡中执行任何操作时无法识别元素错误。
使用了不同的代码:
code1:
public void switchWindow(String originalWindowKey){
System.out.println("Ori"+originalWindowKey);
Set<String> multipleWindowHandles = driver.getWindowHandles();
System.out.println(multipleWindowHandles);
System.out.println("Entry1");
String newWindowKey = "";
System.out.println("Entry2");
for (String windowKeys : multipleWindowHandles) {
System.out.println("1"+windowKeys);
if(windowKeys.equals(originalWindowKey) == false){
System.out.println("Success");
newWindowKey = windowKeys;
}
}
driver.switchTo().window(newWindowKey);
}
码2:
public void sampleSwitch(){
driver.findElement(By.cssSelector("body")).sendKeys(Keys.CONTROL +"\t");
driver.switchTo().defaultContent();
}
CODE3:
public void oneSwitch(){
driver.findElement(By.cssSelector("body")).sendKeys(Keys.CONTROL, Keys.PAGE_DOWN);
}
以上我用来切换标签的方法,但还没有运气。请帮助我。
答案 0 :(得分:0)
您可以通过target
更改JavaScript
属性来避免此问题:
import org.openqa.selenium.JavascriptExecutor;
JavascriptExecutor js = (JavascriptExecutor) driver;
js.executeScript("document.querySelector('a[href="http://store.demoqa.com"]').target='_self';");
这会强制webdriver
在同一个标签
URL
答案 1 :(得分:0)
Set<String> handles = driver.getWindowHandles();
driver.switchTo().window(handles.toArray(new String[1])[1]);
System.out.println("Handles - " + handles.size());
System.out.println("Title - " + driver.getTitle());
System.out.println("Menu text - " + driver.findElement(By.id("menu-main-menu")).getText());
RESULT --
Handles - 2
Title - ONLINE STORE | Toolsqa Dummy Test site
Menu text - Home
Product Category
All Product