我们正在努力把大量的字符串输入到输入框中。当使用Send_keys()时,工作时间太长。这是我找到的解决这个问题的方法。
import pyperclip from selenium.webdriver.common.keys import Keys pyperclip.copy('foo') element.send_keys(Keys.CONTROL, 'v')
这非常有效,但是在headless模式下返回空值。有没有办法在无 Helm 模式下解决这个问题?
jk9hmnmh1#
我看到已经有几个关于这个问题的问题存在于Stackoverflow.首先-请尝试建议使用klembord而不是pyperclip的this解决方案:
klembord
pyperclip
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:中
jaxagkaj2#
不确定您使用的是哪种浏览器或平台操作系统,但通常操作系统不允许无头浏览器访问/许可操作系统剪贴板或浏览器没有在无头模式下设置复制功能。
driver.execute_script('element.value="TestText";')
driver.execute_script('element').setAttribute('value','TestText');Javascript方法有效地将您的内容(在上面的示例中为“Testtest”)传递到您使用.value函数定义的元素中。
driver.execute_script('element').setAttribute('value','TestText');
.value
2条答案
按热度按时间jk9hmnmh1#
我看到已经有几个关于这个问题的问题存在于Stackoverflow.
首先-请尝试建议使用
klembord
而不是pyperclip
的this解决方案:另一种尝试克服问题,但在Java is here:中
jaxagkaj2#
不确定您使用的是哪种浏览器或平台操作系统,但通常操作系统不允许无头浏览器访问/许可操作系统剪贴板或浏览器没有在无头模式下设置复制功能。
driver.execute_script('element.value="TestText";')
driver.execute_script('element').setAttribute('value','TestText');
Javascript方法有效地将您的内容(在上面的示例中为“Testtest”)传递到您使用
.value
函数定义的元素中。