在Chrome上正常测试工作,而不是在Firefox上

时间:2018-04-10 14:41:39

标签: selenium testing selenium-chromedriver selenium-firefoxdriver

我使用TestNG和selenium编写了测试。

code...
actions.sendKeys(Keys.chord(Keys.CONTROL, "a"));
        actions.sendKeys(Keys.BACK_SPACE);
        actions.build().perform();
code...

我想使用这些sendKeys和DataProvider

在登录窗口中删除文本
@DataProvider(name = "inputs")
public Object[][] getData() {
    return new Object[][]{
            {"000000000", true},
            {"000000000", true}
    };
}

HTML:

<div><input type="tel" class="valid TextInput-kJdagG iVdKHC" name="recoveryPhone" id="eb69ff0b-3427-6986-7556-b7af40ffb156" aria-describedby="eb69ff0b-3427-6986-7556-b7af40ffb156" value="+48 "></div>

错误讯息:

Unable to read VR 
Path1523545392670   Marionette  INFO    Enabled via --marionette
1523545393744   Marionette  INFO    Listening on port 52644
1523545394180   Marionette  WARN    TLS certificate errors will be ignored for this session

测试工作正如我在Chrome上所期望的那样,但在Firefox上,这些sendKeys并不总是标记文本,并清除此文本。在项目中我必须使用动作类。为什么测试运行方式不同?

1 个答案:

答案 0 :(得分:0)

根据你的版本(浏览器,浏览器驱动程序,selenium等)检查此帖https://github.com/mozilla/geckodriver/issues/665,这些帖子在任何问题中都是明智的,这可能是geckodriver的一个已知错误。

该帖子包括以不同的方式创建和弦,使用:

List<CharSequence> keyWithModifiers = new ArrayList<CharSequence>();
keyWithModifiers.add(Keys.CONTROL);
keyWithModifiers.add("a");
String ctrlA = Keys.chord(keyWithModifiers);
textFieldElem.sendKeys(ctrlA);

这种方法适用于我使用Selenium 3.7.1 Java绑定,gecko驱动程序0.18.0(64位)和Firefox 57.0.2 - 59.0