我正在尝试使用 Vaadin TestBench 设置我的第一个非常简单的 UX 测试。为了避免下载驱动程序和设置 System.properties 或 PATH 值的麻烦,我还使用 WebDriverManager图书馆。
为了让事情变得更加棘手,我们的登录页面是一个 JSP,我们需要先打开它并进行身份验证,然后才能测试 Vaadin 应用程序。
这是我一直在尝试的简单测试:
public class LoginIT extends TestBenchTestCase {
private static final String URL="http://localhost:8080/";
@Before
public void setup() throws Exception {
ChromeDriverManager.getInstance().setup();
setDriver(new ChromeDriver());
}
@After
public void tearDown() throws Exception {
if (getDriver() != null) {
getDriver().quit();
}
}
@Test
public void testLogin_success() {
getDriver().get(URL);
Assert.equals(URL, getDriver().getCurrentUrl());
WebElement usernameField = driver.findElement(By.name("username"));
}
}
上面的简单测试将传递 currentUrl 断言。但是,它无法找到该元素。
我认为这里有两个问题。
- 浏览器无法打开/导航至该 URL。如果 Chrome 已打开,则运行测试时 Chrome 不会打开新选项卡/页面。或者,如果我允许它启动浏览器,它会在不打开页面(在 Mac OSX 上)的情况下启动浏览器,因此我永远无法直观地确认它导航到 URL。
我尝试过使用 Firefox,它显然与 Selenium 存在很多问题,而 PhantomJS 则存在最新二进制文件中缺少 .lib 文件的问题。使用WebDriverManager,我降级到PhantomJS 2.0,但等待http://localhost:29436/status超时。 。
- 如果它确实“成功”导航到该网址(正如 Chrome 所说),则它无法找到该元素。这可能是由于第 1 点?
如果 TestBench 无法处理 JSP 登录,那么它对我的应用程序将毫无用处。任何帮助是极大的赞赏。我可能做错了什么而导致了我的问题?
最佳答案
为此问题创建了一个简单的测试示例 https://github.com/rogozinds/testbenchexample
您使用的 Testbench 版本是什么? 您可以尝试不使用 ChromeDriverManager 来运行它,只需下载 chromedriver https://sites.google.com/a/chromium.org/chromedriver/downloads 并将其添加到您的系统路径中。
getDriver().get(URL) - 至少应该打开一个新的 Chrome 窗口并导航到 URL。但据我了解,这并没有发生?
P.S 我已经在没有 ChromeDriverManager 的 Testbench 5 中尝试了您的示例,并且它可以使用简单的 index.html 文件。
关于java - TestBench无法打开浏览器,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/42404971/