Python Selenium -输入大字符串时Send_keys()执行速度太慢

v1uwarro  于 2023-02-18  发布在  Python
关注(0)|答案(2)|浏览(252)

我们正在努力把大量的字符串输入到输入框中。
当使用Send_keys()时,工作时间太长。
这是我找到的解决这个问题的方法。

import pyperclip
from selenium.webdriver.common.keys import Keys
pyperclip.copy('foo')
element.send_keys(Keys.CONTROL, 'v')

这非常有效,但是在headless模式下返回空值。
有没有办法在无 Helm 模式下解决这个问题?

jk9hmnmh

jk9hmnmh1#

我看到已经有几个关于这个问题的问题存在于Stackoverflow.
首先-请尝试建议使用klembord而不是pyperclipthis解决方案:

from selenium import webdriver
from selenium.webdriver.firefox.options import Options
from webdriver_manager.firefox import GeckoDriverManager
import klembord
klembord.init()
options = Options()
options.headless = True
driver = webdriver.Firefox(options=options,executable_path=GeckoDriverManager().install())
print("Headless Firefox Initialized. Wait for output")
driver.get("https://www.lipsum.com")
l = driver.find_element_by_xpath("/html/body/div/div[2]/div[2]/div[3]/div[1]/p")
klembord.set_text(l.text) # setting text to clipboard
print("Check clipboard by pressing WIN + V or CTRL +V")
driver.quit()

另一种尝试克服问题,但在Java is here:

jaxagkaj

jaxagkaj2#

不确定您使用的是哪种浏览器或平台操作系统,但通常操作系统不允许无头浏览器访问/许可操作系统剪贴板或浏览器没有在无头模式下设置复制功能。

  • 由于您已经标识了WebElement,因此应尝试使用Javascript方法,因此在您的情况下:*

driver.execute_script('element.value="TestText";')

  • 或 *

driver.execute_script('element').setAttribute('value','TestText');
Javascript方法有效地将您的内容(在上面的示例中为“Testtest”)传递到您使用.value函数定义的元素中。

相关问题