[英]How to switch between 2 browsers in selenium webdriver with java
我正在使用Java開發Selenium Webdriver。 我想打開瀏覽器,在其中執行一些操作。 然后打開另一個瀏覽器並在其中執行相同的操作,然后返回第一個瀏覽器並執行一些操作。
如何在2個瀏覽器之間切換(而不是2個標簽之間的切換)?
這是我所做的:
@BeforeTest
public void beforeTest() throws BiffException, IOException,InterruptedException {
System.setProperty("webdriver.chrome.driver","D:\\MyProjects\\SeleniumTrials\\chromedriver_win32\\chromedriver.exe");
WebDriver driver = new ChromeDriver();
driver.get(properties.getProperty("VAR_BASEURL"));
driver.manage().window().maximize();
WebDriver tempDriver = new ChromeDriver();
tempDriver.get(properties.getProperty("VAR_BASEURL"));
tempDriver.manage().window().maximize();
}
@Test
public void playTournament() throws InterruptedException, BiffException,IOException {
int rowNumber = 1;
int newRowNumber=2;
WebElement login =driver.findElement(By.xpath(properties.getProperty("VAR_LOGIN")));
login.click();
Thread.sleep(1000);
WebElement username = driver.findElement(By.xpath(properties.getProperty("VAR_USERNAME")));
username.clear();
username.sendKeys(getCellContent(0, rowNumber));
Thread.sleep(1000);
WebElement password = driver.findElement(By.xpath(properties.getProperty("VAR_PASSWORD")));
password.clear();
password.sendKeys(getCellContent(1, rowNumber));
Thread.sleep(1000);
WebElement continueButton = driver.findElement(By.xpath(properties.getProperty("VAR_CONTINUE")));
continueButton.click();
Thread.sleep(1000);
WebElement login =tempDriver .findElement(By.xpath(properties.getProperty("VAR_LOGIN")));
login.click();
Thread.sleep(1000);
WebElement username = tempDriver .findElement(By.xpath(properties.getProperty("VAR_USERNAME")));
username.clear();
username.sendKeys(getCellContent(0, rowNumber));
Thread.sleep(1000);
WebElement password = tempDriver .findElement(By.xpath(properties.getProperty("VAR_PASSWORD")));
password.clear();
password.sendKeys(getCellContent(1, rowNumber));
Thread.sleep(1000);
WebElement continueButton = tempDriver .findElement(By.xpath(properties.getProperty("VAR_CONTINUE")));
continueButton.click();
我想這就是你想要的,
當你做
WebDriver driver = new ChromeDriver();
driver = new ChromeDriver();
您重新初始化driver
實例,女巫意味着您松開了第一個瀏覽器。 您可以通過調用getWindowHandles()
看到它
driver.getWindowHandles(); // will be 1, the last open browser
如果要使用其他瀏覽器,請使用臨時驅動程序
WebDriver driver = new ChromeDriver();
WebDriver tempDriver = new ChromeDriver();
// do some stuff on tempDriver
tempDriver.close();
// continue working with the first driver
@ TDriver.ts
import {browser, ProtractorBrowser} from 'protractor';
export class TDriver {
private static defaultBrowser: ProtractorBrowser = browser;
private static activeBrowser;
public async newDriver() {
const secondDriver = TDriver.activeBrowser.forkNewDriverInstance();
await this.setActiveBrowser(secondDriver);
}
public setActiveBrowser(driver: ProtractorBrowser) {
TDriver.activeBrowser = driver;
}
public getActiveBrowser() {
return TDriver.activeBrowser;
}
public setDefaultBrowserActive() {
TDriver.activeBrowser = TDriver.defaultBrowser;
}
}
@ Test.ts
import {by} from 'protractor';
import {TDriver} from '../driver/TDriver';
export class Test {
private driver = new TDriver().getActiveBrowser();
this.driver.findElement(by.xpath("xPathSelector")).click(); //this click in first native driver instance
await new TDriver().newDriver(); //create new driver and switch to it!
this.driver.findElement(by.xpath("xPathSelector")).click(); //this click in the second driver instance
await new TDriver().setDefaultBrowserActive(); //now we switch and use again native driver
this.driver.findElement(by.xpath("xPathSelector")).click(); //this click in first native driver instance
}
這些方法使您可以在本機瀏覽器中執行測試,然后創建新實例並在第二個瀏覽器驅動程序中繼續測試。 在我的項目中工作。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.