以下说明

Selenium.typeKeys("location", "gmail.com");

键入字符串 gmailcom ,而不是 gmail.com

那里发生了什么?

来自评论:
我正在尝试模拟自动填充,目前在selenium上执行此操作的唯一方法是组合type和typeKeys。例如:

selenium.type("assigned_to", split[0]+"@");
selenium.typeKeys("assigned_to", "gmail.com");

现在我的问题是为什么typeKeys不在gmail.com之间输入'dot'?

有帮助吗?

解决方案

您是否尝试过使用Native键功能和 javascript char code ? 我无法使用它们获得'句号'字符(char 190),但是我得到了十进制(字符110)才能正常工作,文本框也不应该有问题。

selenium.Focus("assigned_to");
selenium.Type("assigned_to", split[0]+"@");
selenium.TypeKeys("assigned_to", "gmail");
selenium.KeyPressNative("110");
selenium.TypeKeys("assigned_to", "com");

其他提示

使用 type 方法。

来自 javadoc for typekeys

  

此命令可能有也可能没有   可见效果,即使在哪些情况下   键入键通常会有一个   可见效果

     

...

     

在某些情况下,你可以   需要使用简单的“类型”命令   然后设置字段的值   “typeKeys”命令发送   击键事件对应什么   你刚输入。

我们在selenium python中使用typekeys时遇到了类似的问题。

我们想要解决此问题的一个解决方法是使用'type'和'type_keys'的组合。您可能知道,类型没有这样的问题。

我们在selenium python脚本中这样做了,它运行得很好。

例如: 如果要在文本框中输入电子邮件地址:test.me@test.me.uk

然后做

type(locator,’test.me@test.me.’)
type_keys(locator,’uk’)

也许是一种非常粗暴的方式,但它确实起了作用。

希望这可以帮助其他有类似问题的人。

在写入之前,还要尝试将焦点设置在元素上。

selenium.focus(locator);
selenium.typeKeys(locator, value);

它在我的情况下起作用,处理输入类型=密码。

假设使用 typeKeys 键入的字符串是“abc.xyz.efg”。然后,我们可以使用 type typeKeys 命令来编写给定的字符串。

type(locator,"abc.xyz.")
typeKeys(locator,"efg")

只要您想在下拉框中选择一个元素,上述两个步骤就很有用,只有在我们使用typeKeys命令时才会弹出下拉列表。

我在使用Selenium RC(C#)时也看到了这种行为,并且使用了不同的字符(例如'y',它似乎也会从输入操作中删除字符跟踪它。)

对于某些情况,完全有可能通过使用TypeKeys或KeyPress函数键入键来解决问题,但我还没有设法找到一个解决方案,当您想在字段中键入文本时,输入控制字符(例如[Enter]或换行符),然后键入更多文本..(在这种情况下使用'Type'函数只是覆盖字段内容...)。

如果有人设法找到这个问题的合理解决方案,请将它添加到这个问题,因为它现在开始出现在谷歌中,可能会帮助很多人..(如果可以,我会开始赏金..)

这是Selenium中的一个漏洞(bug SEL-519 )。

经过一番摆弄,我终于成功进入'。'使用JavaScript进入textarea。通过 storeEval 等执行 window.document.getElementById('assigned_to')。value + ='。'之类的操作。

我得到了相同的行为,但通过将变量传递给Type命令而不是字符串来修复它。

string email = @"name@gmail.com";
selenium.Type(inputfield, email);

它就像一个魅力!

许可以下: CC-BY-SA归因
不隶属于 StackOverflow
scroll top