我是编码新手。据我所知,已经成功登录。在主页中,当我单击指定的链接时,它将在新选项卡中打开,这是预期的行为。 现在,当我尝试单击新打开的选项卡中存在的元素时,由于驱动程序实例指向第一个选项卡而不是第二个选项卡,因此没有出现此类元素异常。 如何获取新打开的选项卡的驱动程序实例。 下面是我正在使用的代码。
//这是基类。
public class BaseTest {
public static WebDriver driver ;
@BeforeTest
public void setUp() {
System.setProperty("webdriver.chrome.driver", "/chromedriver.exe");
driver = new ChromeDriver();
driver.manage().window().maximize();
driver.get("My url");
}
}
//这是登录测试。
public class LoginTest extends BaseTest {
@Test
public void login() throws InterruptedException {
LoginPage loginpage = PageFactory.initElements(driver, LoginPage.class);
loginpage.enterUser_Name(userName);
loginpage.enterPass_Word(passWord);
loginpage.clickLoginButton();
}
}
Thread.sleep(5000);
loginpage.ClickOnTab();
Thread.sleep(5000);
loginpage.clickOnLink(); //At this line, new tab is opened automatically.
Thread.sleep(5000);
}
}
///在新打开的选项卡中,我需要单击一些元素。这是我正在使用的代码。
public class newTab extends BaseTest {
@Test
public void createNew() {
OtherPage create = PageFactory.initElements(driver,OtherPage.class);
Thread.sleep(10000);
create.clickOnTab();// At this line I am getting no such element exception
}
}
请帮助我如何在新打开的标签页上执行操作,并告诉我我在哪里出错。
答案 0 :(得分:0)
尝试以下代码
public class LoginTest extends BaseTest {
@Test
public void login() throws InterruptedException {
LoginPage loginpage = PageFactory.initElements(driver, LoginPage.class);
loginpage.enterUser_Name(userName);
loginpage.enterPass_Word(passWord);
loginpage.clickLoginButton();
}
}
Thread.sleep(5000);
loginpage.ClickOnTab();
Thread.sleep(5000);
loginpage.clickOnLink(); //At this line, new tab is opened automatically.
Thread.sleep(5000);
}
public String getLocalWindowHandle (){
return driver.getWindowHandle();
}
}
public class newTab extends BaseTest {
LoginTest loginTest = new LoginTest();
@Test
public void createNew() {
OtherPage create = PageFactory.initElements(driver,OtherPage.class);
Thread.sleep(10000);
ArrayList listOfAllWindowHandles = new ArrayList(driver.getWindowHandles());
driver.switchTo().window((String) listOfAllWindowHandles.get(0));
create.clickOnTab();
driver.close();
String firstWindowHandle = loginTest.getLocalWindowHandle();
driver.switchTo().window(firstWindowHandle);
}
}