使用带有硒和pyvirtualdisplay的剪贴板



我有一个selenium脚本,它可以工作,并且必须使用虚拟disply(pyvirtualdisplay或xvfbwrapper(,并在最后单击"复制到剪贴板"按钮。这些脚本在windows(没有虚拟显示器(上运行良好,但在linux上则不然。我认为问题是,我试图使用剪贴板的库(如pyperclip(使用操作系统剪贴板的库不存在,我如何使用虚拟显示器的剪贴板?

我的代码是这样开始的:

display = Display(visible=0, size=(800, 600))
display.start()
pyperclip.determine_clipboard()

问题出现在这里:

copy_btn = WebDriverWait(driver,100000).until(EC.element_to_be_clickable((By.CSS_SELECTOR,'button[title="Copy Full Text"]')))
copy_btn.click()
print('Text Copied')
time.sleep(2)
clip = pyperclip.paste()

错误消息:

pyperclip.yperclipException:Pyperclip无法为您的系统找到复制/粘贴机制。欲了解更多信息,请访问https://pyperclip.readthedocs.io/en/latest/index.html#not-实现错误

您可以使用panda,它将在Windows和Linux 上工作

import pandas as pd
myvariable = pd.read_clipboard()
print(myvariable)

这是我的小解决方法:

def paste_to_element(driver, element, text):
# Create a temporary HTML file with the text content
temp_file_path = 'temp.html'
with open(temp_file_path, 'w') as temp_file:
temp_file.write("<body>"+text.replace("n","<br>")+"</body>")
# Open the temporary HTML file in a new tab
driver.execute_script("window.open('about:blank', '_blank');")
driver.switch_to.window(driver.window_handles[-1])
driver.get('file://' + os.path.abspath(temp_file_path))
# Wait for the webpage to load
time.sleep(3)
# Copy the text from the webpage
driver.find_element(By.CSS_SELECTOR,"body").send_keys(Keys.CONTROL, 'a')
driver.find_element(By.CSS_SELECTOR,"body").send_keys(Keys.CONTROL, 'c')
# Close the tab
driver.close()
driver.switch_to.window(driver.window_handles[0])
# Delete the temporary file
os.remove(temp_file_path)
# Paste the copied text into the element
element.send_keys(Keys.SHIFT + Keys.INSERT)

相关内容

  • 没有找到相关文章

最新更新