因此,我在一个react项目中使用selenium-webdriver运行selenium测试。每次我运行测试时,它都会打开一个新的chrome窗口,这非常令人恼火,因为我最终打开了一百万个chrome窗口。是否可能强制selenium使用已经打开的浏览器窗口?
编辑:这里有一个测试代码的简单示例。
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绑定,那么您可以尝试使用下面的代码。您也可以在这里参考jasmin docs以获得更多细节
在此之前,对于spec.js中的所有测试,每个测试只运行一次
在每个之前启动浏览器会话
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();)
});
@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();
}
这是我的Java代码: 当我运行它时,会出现以下错误: 我正在使用IntelliJ,安装了chrome驱动程序,但没有解决它,所以任何人都知道这个问题的解决方案??
我已经添加了一个actionlistener到一个jmenuproject,它调用一个类,该类读取一个excel文件并在一个jframe中打开一个jgraph。我还添加了另一个actionlistener到不同的jmenuproject,为相同的exel文件调用相同的类,但不同的excel表(不同的int参数)。然而,当我运行我的主框架时,我点击菜单项,我一次只能打开其中一个。我必须关上一个来打开
如果我直接在docker中运行google-chrome,它会显示如下: 系统:
问题内容: 我想依次运行每个选定的py.test项目任意次。 我没有看到任何标准的py.test机制来执行此操作。 我试图做到这一点。我修改了传入的项目列表,以多次指定每个项目。测试项目的第一次执行可以按预期工作,但是这似乎对我的代码造成了一些问题。 此外,我希望每次运行都具有唯一的测试项目对象,因为我在各种报告代码中都使用id(项目)作为键。不幸的是,我找不到任何py.test代码来复制测试项目
我想在Jenkins中运行Selenium Webdriver Maven测试。我遵循了教程:https://www.guru99.com/maven-jenkins-with-selenium-complete-tutorial.html和https://www.safaribooksonline.com/library/view/jenkins-the-definitive/978144931
这真的很烦人,还有人面对过这个问题吗?有解决办法吗?