在使用selenium单击下拉列表中的选项时,链接将在一个新选项卡中打开。
因此,当试图定位元素时,我将得到一个空指针异常。如何切换到新的选项卡来定位元素?
我正在使用java语言开发chrome浏览器。
发布于 2017-10-26 13:26:42
我找到了另一种解决方案,它适用于我--使用windows处理程序。
String parentWindowHandler=driver.getWindowHandle();// Store your parent window
String subWindowHandler = null;
Set<String> handles = driver.getWindowHandles(); // get all window handles
Iterator<String> iterator = handles.iterator();
while (iterator.hasNext()){
subWindowHandler = iterator.next();
}
driver.switchTo().window(subWindowHandler); // switch to popup window当driver.switchTo().window(parentWindowHandler);需要时,您可以切换回父窗口
发布于 2017-10-23 18:45:10
您可以使用机器人类使用键盘快捷键切换到新选项卡,CTRL+SHIFT+TAB -在选项卡之间切换。
Robot robot = new Robot();
robot.keyPress(KeyEvent.VK_CONTROL);
robot.keyPress(KeyEvent.VK_SHIFT);
robot.keyPress(KeyEvent.VK_TAB);
robot.keyRelease(KeyEvent.VK_TAB);
robot.keyRelease(KeyEvent.VK_SHIFT);
robot.keyRelease(KeyEvent.VK_CONTROL);您还可以使用下列方法之一:Switch tabs using Selenium WebDriver with Java
发布于 2019-04-19 09:32:07
Here you can open new tab and switch then open a new url in new tab
package com.crm.qa.BaseTest;
import java.awt.AWTException;
import java.awt.Robot;
import java.awt.event.KeyEvent;
import java.util.ArrayList;
import org.openqa.selenium.WebDriver;
import org.openqa.selenium.chrome.ChromeDriver;
public class NewTabChrome {
public static void main(String[] args) throws AWTException {
System.setProperty("webdriver.chrome.driver",
"C:/Users/sunil/Downloads/chromedriver_win32 (2)/chromedriver.exe");
WebDriver driver = new ChromeDriver();//open browser
driver.manage().window().maximize();//browser maximize
driver.get("http://www.google.com");//open google
//open new tab
for(int i = 0; i<=1;i++){
Robot rob = new Robot();
rob.keyPress(KeyEvent.VK_CONTROL);
rob.keyPress(KeyEvent.VK_T);
rob.keyRelease(KeyEvent.VK_CONTROL);
rob.keyRelease(KeyEvent.VK_T);
ArrayList<String> tabs1 = new ArrayList<String> (driver.getWindowHandles());
//Switch to new tab
driver.switchTo().window((String) tabs1.get(i));
}
//open facebook
driver.get("http://facebook.com");
driver.quit();
}
}https://stackoverflow.com/questions/46893912
复制相似问题