如何在 WebDriver 中使用 Java 将浏览器的控件带到新打开的选项卡
How can I take a browser's control to a newly opened tab using Java in WebDriver
//Go to a page where link is present
driver.findElement(By.xpath("//div[@id='LftNav']/ul/li[3]/div/ul/li[3]/a/label"))).click();
//Click this link will open up a new tab.
driver.findElement(By.xpath("//tr[2]/td[9]/a")).click();
//Now I have to verify a value present in the New Tab.
为此,我必须将控件传递给新选项卡。我该怎么做?
您可以使用以下功能切换标签页(并完成 windows):
ArrayList<String> windowHandles = new ArrayList<String> (driver.getWindowHandles());
driver.switchTo().window(windowHandles.get(1));
除非你只有两个手柄。如果您想关闭标签并返回,您可以使用:
driver.close();
driver.switchTo().window(windowHandles.get(0));
如果您有两个以上的选项卡,您可以使用:
driver.getWindowHandles().size()
获取打开的标签页数量并直接跳转到size()-1
String mainWindow = driver.getWindowHandle(); // get the main window handle
driver.findElement(By.cssSelector("//*[#id='someId']")).click(); // click some link that opens a new window
for (String winHandle : driver.getWindowHandles()) {
driver.switchTo().window(winHandle);
// switch focus of WebDriver to the next found window handle (that's your newly opened window)
if(driver.findElement(By.Id("SomeID")).getText().equals("expected window title"))
break;
}
SendKeys 对我不起作用。我尝试了以下对我有用的代码:
WebDriver driver = new ChromeDriver();
driver.get("https://www.google.com/");
Robot robot = new Robot();
robot = new Robot();
robot.keyPress(KeyEvent.VK_CONTROL);
robot.keyPress(KeyEvent.VK_T);
robot.keyRelease(KeyEvent.VK_CONTROL);
robot.keyRelease(KeyEvent.VK_T);
Thread.sleep(3000);
robot.keyPress(KeyEvent.VK_CONTROL);
robot.keyPress(KeyEvent.VK_TAB);
robot.keyRelease(KeyEvent.VK_CONTROL);
robot.keyRelease(KeyEvent.VK_TAB);
int tabNo = driver.getWindowHandles().size();
System.out.println(tabNo);
ArrayList<String> windowHandles = new ArrayList<String> (driver.getWindowHandles());
driver.switchTo().window(windowHandles.get(tabNo-1));
driver.get("http://www.bing.com/");
//Go to a page where link is present
driver.findElement(By.xpath("//div[@id='LftNav']/ul/li[3]/div/ul/li[3]/a/label"))).click();
//Click this link will open up a new tab.
driver.findElement(By.xpath("//tr[2]/td[9]/a")).click();
//Now I have to verify a value present in the New Tab.
为此,我必须将控件传递给新选项卡。我该怎么做?
您可以使用以下功能切换标签页(并完成 windows):
ArrayList<String> windowHandles = new ArrayList<String> (driver.getWindowHandles());
driver.switchTo().window(windowHandles.get(1));
除非你只有两个手柄。如果您想关闭标签并返回,您可以使用:
driver.close();
driver.switchTo().window(windowHandles.get(0));
如果您有两个以上的选项卡,您可以使用:
driver.getWindowHandles().size()
获取打开的标签页数量并直接跳转到size()-1
String mainWindow = driver.getWindowHandle(); // get the main window handle
driver.findElement(By.cssSelector("//*[#id='someId']")).click(); // click some link that opens a new window
for (String winHandle : driver.getWindowHandles()) {
driver.switchTo().window(winHandle);
// switch focus of WebDriver to the next found window handle (that's your newly opened window)
if(driver.findElement(By.Id("SomeID")).getText().equals("expected window title"))
break;
}
SendKeys 对我不起作用。我尝试了以下对我有用的代码:
WebDriver driver = new ChromeDriver();
driver.get("https://www.google.com/");
Robot robot = new Robot();
robot = new Robot();
robot.keyPress(KeyEvent.VK_CONTROL);
robot.keyPress(KeyEvent.VK_T);
robot.keyRelease(KeyEvent.VK_CONTROL);
robot.keyRelease(KeyEvent.VK_T);
Thread.sleep(3000);
robot.keyPress(KeyEvent.VK_CONTROL);
robot.keyPress(KeyEvent.VK_TAB);
robot.keyRelease(KeyEvent.VK_CONTROL);
robot.keyRelease(KeyEvent.VK_TAB);
int tabNo = driver.getWindowHandles().size();
System.out.println(tabNo);
ArrayList<String> windowHandles = new ArrayList<String> (driver.getWindowHandles());
driver.switchTo().window(windowHandles.get(tabNo-1));
driver.get("http://www.bing.com/");