因此,我在react项目中使用selenium-webdriver运行硒测试。每次运行测试时,都会打开一个新的chrome窗口,这非常烦人,因为最终我打开了一百万个chrome窗口。可以强制硒使用已经打开的浏览器窗口吗?
编辑: 这是测试代码的简单示例。
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")
})
})
})
答案 0 :(得分:1)
如果您在Jasmine框架中使用javascript绑定,则可以尝试使用以下代码。您还可以参考jasmin文档以获取更多详细信息here
beforeEach将仅对spec.js中的所有测试运行一次
在beforeEach中启动浏览器会话
afterEach将对spec.js中的所有测试运行一次
在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();
}
答案 1 :(得分:0)
此设置对我有用:
options = Options()
options.add_argument('--headless')
options.add_argument('--profile-directory=Default')
browser = webdriver.Chrome(options=options,executable_path='./chromedriver/chromedriver.exe')
关键是要设置:
options.add_argument('--profile-directory=Default')