gpt4 book ai didi

selenium - 如何防止 Selenium 在每次测试运行时打开一个新的 chrome 窗口?

转载 作者:行者123 更新时间:2023-12-05 05:14:52 24 4
gpt4 key购买 nike

所以我在一个 React 项目中使用 selenium-webdriver 运行 selenium 测试。每次我运行测试时,它都会打开一个新的 chrome 窗口,这非常令人恼火,因为我最终打开了一百万个 chrome 窗口。是否可以强制 selenium 使用已经打开的浏览器窗口?

enter image description here

编辑:这是一个简单的测试代码示例。

const webdriver = require('selenium-webdriver');
const { By, Key } = webdriver

describe('Dashboard page', () => {

it('renders correctly', async() => {
var chromeCapabilities = webdriver.Capabilities.chrome();
var chromeOptions = {
//'args': ['--headless']
};
chromeCapabilities.set('chromeOptions', chromeOptions);
const driver = new webdriver.Builder().withCapabilities(chromeCapabilities).build();

await driver.get('http://localhost:3000/dashboard')

await driver.getTitle().then((title) => {
expect(title).toEqual("My website | Dashboard")
})

await driver.getCurrentUrl().then((url) => {
expect(url).toEqual("http://localhost:3000/dashboard")
})
})
})

最佳答案

如果您在 Jasmine 框架中使用 javascript 绑定(bind),那么您可以尝试使用以下代码。您还可以引用 jasmin 文档了解更多详细信息 here

beforeEach 将只为 spec.js 中的所有测试运行一次

Start browser session in beforeEach

afterEach 将为 spec.js 中的所有测试运行一次

End browser session in AfterEach

 describe('Before Each Spec', function () {
beforeEach(function () {
// Create new browser instance once for all spec tests
var chromeCapabilities = webdriver.Capabilities.chrome();
var chromeOptions = {
//'args': ['--headless']
};
chromeCapabilities.set('chromeOptions', chromeOptions);
const driver = new webdriver.Builder().withCapabilities(chromeCapabilities).build();

});


describe('Test Method 1', function() {
it('should have a title', function() {
// TO DO Code
});
});

describe('Test Method 2', function() {
it('should have a something to test', function() {
// TO DO Code
});
});

describe('After Each Spec', function () {
afterEach(function () {
// Destroy browser after all tests finished
browser.quit(); (or browser.driver.close();)

});

如果您使用的是 java,那么您可以使用下面的注释,它只对完整的 testng xml 运行一次或每个 testng 类运行一次,例如@BeforeSuite 或@BeforeClass

@BeforeSuite
public void setUP(){
startSeleniumSession();
}

public void startSeleniumSession(){
WebDriver driver = new ChromeDriver();
}

@Test
public void startTest2(){
driver.get("some url 1");
driver.findElement(By.id("someID")).click()
}


@Test
public void startTest2(){
// this test will run in same browser
driver.get("some url 2");
driver.findElement(By.id("someID")).click()
}

@AfterSuite
public void tearDown(){
driver.quit();
}

关于selenium - 如何防止 Selenium 在每次测试运行时打开一个新的 chrome 窗口?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/52201724/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com