gpt4 book ai didi

java - Sendkeys 不一致地丢弃字母

转载 作者:行者123 更新时间:2023-12-03 12:34:39 24 4
gpt4 key购买 nike

我正在使用 (new Actions(driver).sendKeys(String).perform() 将输入发送到 webdriver。但是,我一直得到不一致的结果。有时 String 会完美发送,有时会丢失一个或另一个字母,即使字符串本身的长度只有几个字符。

我什至尝试一次发送一个字符的字符串(使用 for 循环),但我仍然遇到同样的不一致行为 - 它丢弃的键比以前少,但仍然不是 100% 准确。

这可能是什么原因,如何解决这个问题?

我使用的是 Chromedriver、Java/JUnit,键盘布局设置为美国。

最佳答案

我仍然不清楚到底是什么导致了这种情况 - 我看到将所有 key 发送到某些 extjs 组件时出现不一致的失败。我不确定这是 extjs 做了一些奇怪的事情还是 selenium 有点不稳定。我们在制作字符串或调用发送键时并没有做任何奇怪的事情(除了额外等待以检查元素是否已启用和显示),所以它在我们的代码中感觉不像是什么东西。

我的解决方案是重复发送 key ,直到它们明显粘住。出于多种原因,我已经包装了 selenium api,因此所有对 WebElements 的调用都通过一个名为 WrappedElement 的类进行路由,该类具有发送键方法:

    public void SendKeys(string text)
{
Func<string> errorMessage = () => string.Format("couldn't send keys {0} entered either {1} or {2}", text, Text, Value);

Action actionToTry = () =>
{
_element.Clear();
RawSendKeys(text);
};

Wait.RepeatedlyTry(actionToTry, () => Text == text || Value == text, errorMessage);
}

public void RawSendKeys(string text)
{
_element.SendKeys(text);
}

等待方法的简化版本如下所示:

    public void RepeatedlyTry(Action actionToTry, Func<bool> completed, Func<string> errorMessage)
{
Wait.Until(d =>
{
actionToTry();
return completed();
});
}

Where Until 只是在配置的 DefaultWait 上调用 Until

关于java - Sendkeys 不一致地丢弃字母,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/20258332/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com