在 Safari 17.3.1 上无法使用 sendkeys 输入“d”“e”或“f”

问题描述 投票:0回答:1

我正在使用 Safari 驱动程序,包含在 Safari 17.3.1 (19617.2.4.11.12) 中。我在使用最新版本的 Chrome、Edge 或 Firefox 时没有遇到任何问题。

我有一个只有文本区域输入的网页。如果我尝试使用 SendKeys 输入“def”(一次一个字符,作为较长字符串的一部分,或者只是作为“def”),则不会出现字母“d”、“e”和“f”在文本区域中。网页的 html 只是:

<!DOCTYPE html>
<html>
  <head></head>
  <body>
    <form action="action_page.php">
      <textarea id="input" name="textInput" rows="10" cols="80">
      <textarea>
    </form>
   </body>
</html>

如果我发送包含字符“d”、“e”或“f”的字符串,这些字符不会出现在文本输入中。

我尝试过仅使用 input.SendKeys(text),我尝试过使用 SendKeys 一次输入一个字符(有或没有 100 毫秒到两秒的延迟),并且我尝试过操作来输入文本。我可以在键入时输入“d”、“e”或“f”,但不能通过代码输入。这是我尝试过的最简单的版本:

input.Click();
input.SendKeys(""); // this seems to help in other cases, otherwise the first character doesn't appear
for (int i = 0; i < text.Length; ++i)
{
    input.SendKeys(text[i].ToString());
}

这让我觉得自己很无能...

selenium-webdriver c#-4.0 sendkeys safaridriver
1个回答
0
投票

也许使用 JS 发送输入?

如果

SendKeys()
由于某种原因不起作用,你可以使用JS来帮你完成这项工作。像这样:

input.Click();
input.SendKeys(""); // this seems to help in other cases, otherwise the first character doesn't appear
for (int i = 0; i < text.Length; ++i)
{
    driver.executeScript("var e = arguments[0];e.value = e.value+\"" + text[i].ToString() + "\";",input);
}

顺便说一句,我不是 100% 确定这在 Java 中是有效的,我在 Python 中这样做并且它有效,也许 Java 语法会与这里的 Selenium 不同,但你明白了。

© www.soinside.com 2019 - 2024. All rights reserved.