我刚开始学习selenium java。 我有这个测试代码,它只是基本打开google.com页面并获得它的标题,并断言标题。我的问题是每次运行测试时,Firefox都会被调用两次。我已经搜索了可能的问题,尝试了一些修复。但没有什么对我有用..尝试将“@BeforeTest”更改为“@BeforeClass”和“@Before”仍然相同。
firefox版本:55.0.3
硒版本:3.5.3
geckodriver:0.19.0
这是我的代码:
public class ATest {
public String baseURL = "http://google.com";
public WebDriver driver;
@BeforeTest
public void setBaseURL() {
driver = new FirefoxDriver();
driver.get(baseURL);
}
@Test
public void verifyHomePageTitle() {
setBaseURL();
String expectedTitle = "Google";
String actualTitle = driver.getTitle();
Assert.assertEquals(actualTitle, expectedTitle);
}
}
答案 0 :(得分:0)
我还没有将Selenium与Java一起使用,只使用了Ruby。但我的猜测是@BeforeTest
指令使 setBaseURL()在每次测试之前执行。所以在这里你有第一个打开的浏览器。稍后当您在实际测试中执行的操作是再次运行 setBaseURL()时,将打开第二个浏览器。
从 verifyHomePageTitle()中删除 setBaseURL(),或删除@BeforeTest
答案 1 :(得分:0)
@BeforeTest在测试之前执行,因此您需要从测试中删除setBaseURL()。无论如何它都会在它之前运行。
答案 2 :(得分:0)
get
方法被调用两次,因此它会加载两次页面。通过调用@BeforeTest
进入@Test
和setBaseURL
后的第二位。从setBaseURL
移除@BeforeTest
,在实际get
方法中移动@Test
方法,您应该没问题
以下是java doc关于get
方法
void get(java.lang.String url)
Load a new web page in the current browser window.
获取
void get(java.lang.String url)
在当前浏览器窗口中加载新网页。这是使用HTTP GET操作完成的,该方法将阻塞,直到加载完成。这将遵循服务器发出的重定向或返回的HTML中的元重定向。如果元重定向“休息”任何持续时间,最好等到此超时结束,因为如果在测试执行期间底层页面发生更改,将来对此接口的调用结果将是新的加载页。 WebDriver.Navigation.to(String)的同义词。
参数:url - 要加载的URL。最好使用完全限定的URL
public class ATest {
public String baseURL = "http://google.com";
public WebDriver driver;
@BeforeTest
public void setBaseURL() {
driver = new FirefoxDriver();
}
@Test
public void verifyHomePageTitle() {
driver.get(baseURL);
String expectedTitle = "Google";
String actualTitle = driver.getTitle();
Assert.assertEquals(actualTitle, expectedTitle);
}
}
参考链接