【问题标题】:send_keys speed is very slow selenium | pythonsend_keys 速度很慢 selenium | Python
【发布时间】:2019-05-17 12:07:47
【问题描述】:

我在 Windows 10 上使用 chrome 32 位。Selenium send_keys() 的输入速度很慢。对于较长的字符串,它的 线性时间 最差。请建议我如何加快 send_keys() 输入速度或建议我在文本部分输入文本的替代方式

txt_box=driver.find_element(By.XPATH  , '//*[@id="main"]/footer/div[1]/div[2]/div/div[2]')
my_string="john"
driver.execute_script("arguments[0].setAttribute('value', '" + my_string +"')", txt_box)

这种替代方式行不通。

【问题讨论】:

  • 寻求调试帮助的问题(“为什么这段代码不起作用?”)必须包括所需的行为、特定的问题或错误以及重现它所需的最短代码在问题本身。没有明确的问题陈述的问题对其他读者没有用处。见:How to create a Minimal, Complete, and Verifiable example.
  • 您必须输入文本吗?否则它有点hackish并且不会测试所有内容,但我认为您可以执行脚本来设置值。
  • 请更新您问题中的代码试验。
  • @JeremyKahan send_key() 适用于 txt_box 但 execute_script 不起作用
  • 这是一个 Protractor 线,它正在为我处理一个文本区域(屏幕上有 2 个,我找到了第一个),其中项目很长,需要几分钟才能键入。等待浏览器。 executeScript("arguments[0].value=arguments[1].toString()", textareas[0], ilObjectAsString);

标签: python selenium webdriver selenium-chromedriver ui-automation


【解决方案1】:

在我的情况下,我在我的 PC 上使用 64 位操作系统架构 - 据我所知,这是因为 Selenium 执行 32 位和 64 位模式之间的切换(这是非常慢的操作)。 ChromeDriver 仅支持 32 位。我的 IE 驱动程序也有同样的问题。

即使,如果在Chromedriver issue得到确认

是的,Chromedriver 可以在 64 位 Windows 和 64 位 Chrome 上成功运行。

我建议您从Download page 检查驱动程序-浏览器对的兼容性。如果你没问题,请尝试两个版本的上/下(它们重叠)。

【讨论】:

  • 我检查了它在 64 位 Firefox 中以相同的速度工作。
【解决方案2】:

我在 python 中遇到了同样的问题,用不同的浏览器尝试了所有那些 32 位、64 位的东西,但是 send_keys() 花费了非常长的时间,感觉就像一个脾气暴躁的老男人在打字。我找到了使用 Javascript 和繁荣的解决方案,产生了巨大的影响。以下是使用 Javascript 的方法。

driver.execute_script('document.getElementById("content").value="My Dummy Text";')

地点:

Driver 是您使用以下类似命令创建的浏览器驱动程序:

driver = webdriver.Chrome(chrome_options=chrome_options, executable_path=chrome_path)

execute_script 是我们将用来传递 Javascript 的函数

document.getElementByID 是您的 JS 方法,您将使用它来获取文本框/文本区域信息,在这种情况下,因为我们使用的是 getElementByID,因此您必须找到文本框的 ID,在我的情况下是“内容”,请参阅下面的参考:

<textarea class="wp-editor-area" style="height: 361px; margin-top: 37px;" autocomplete="off" cols="40" name="content" id="content" aria-hidden="false"></textarea>

注意上面 HTML textarea 标签的 ID 参数。您可以使用 Chrome 开发人员工具找到此信息,方法是执行右键单击和检查,然后复制元素,然后检查 ID 信息。如果由于某种原因,ID 不存在,您可以使用其他方法,例如 'Class' 或 'Name' 或 'CSS' 等 getElementBy*

更多信息请参考此链接:https://www.w3schools.com/js/js_htmldom_elements.asp

最后,您将使用 .value 参数将内容放入该文本框中。在我们的例子中,我们将文本“My Dummy Text”作为值传递给文本框,它工作得非常好。

希望这可以帮助任何希望在 python 中加速 send_keys() 的人

注意:此方法将替换 textarea 中的所有现有文本,如果您想保留现有文本,则可以先“获取”元素值,附加到您的字符串,然后传递 value 方法,然后应该可以正常工作。

【讨论】:

    猜你喜欢
    • 2023-02-17
    • 2017-08-11
    • 1970-01-01
    • 1970-01-01
    • 2011-06-06
    • 2012-06-25
    • 2015-03-19
    • 2018-08-09
    • 2021-08-02
    相关资源
    最近更新 更多