【发布时间】:2018-12-27 14:15:25
【问题描述】:
我将如何编写任何每次都能产生相同结果并且永远值得信任的 selenium 自动化代码? 你们大多数人都应该知道 sendKeys 简直就是垃圾。
-它没有写完整的输入
-有时它根本不写
-它会跳到其他元素并弄乱输入
-它不能写更长的字符序列
-你不能正确检查它
-你不能让它等待。直到所有东西都发送出去
而这一切都被简单地随机化为一个十亿分之一的集群 我此刻的例子(我可能改变了我的方法超过 10 次)
public static void sendKeys(By by, String input) {
if (by == null) {
throw new IllegalArgumentException("Parameter 'by' is null.");
}
if (input == null) {
throw new IllegalArgumentException("Parameter 'input' is null.");
}
LOGGER.info("sendKeys() - By locator '{}'", by.toString());
WebElement elem = WebElementFinder.getElement(by);
elem.clear();
elem.sendKeys(input);
checkKeySendResult(by, input);
}
public static void checkKeySendResult(By by, String input) {
WebElement elem = WebElementFinder.getElement(by);
String value = elem.getAttribute("value");
if (!value.equals(input)) {
LOGGER.info("sendKeys() - didn't work");
elem.clear();
elem.sendKeys(input);
checkKeySendResult(by, input);
} else {
LOGGER.info("sendKeys() - sent all characters");
}
}
你知道我的期望;
-所有密钥都应该发送
-sendKeys 不应在打字中途停止然后转到其他地方
-我应该能够正确检查输入是否正确
-如果不正确,我应该能够轻松而坚定地纠正它
请不要告诉我使用服务员,因为我显然确实在每一步都尝试过服务员......
我会测试这里提供的任何类型的建议,我希望每个人都这样做,并希望有人可以让我睁开眼睛看到稳定的 sendKeys 方法。
如果你不能帮助我,请使用这个帖子来激烈地描述你对 sendKeys 的仇恨以及使用它是多么令人沮丧。
感谢大家的意见。
obs:对不起我的法语
【问题讨论】:
-
在没有提供导致问题的 HTML 的特定问题的情况下很难在这里为您提供帮助(更好的是,将我们指向有问题的页面)。你上面提到了很多问题,其实太多了。我倾向于认为问题在于网站行为,而不是您的自动化代码。例如,如果 sendKeys() 向限制字符数的字段发送太多字符,您将看不到发送给它的所有字符。这是该字段的预期行为,而不是 sendKeys() 的错误