我使用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并不总是标记文本,并清除此文本。在项目中我必须使用动作类。为什么测试运行方式不同?
答案 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