Python-Selenium:剪贴板功能(ctrl + c)在 Firefox 无头模式下不起作用

Posted

技术标签:

【中文标题】Python-Selenium:剪贴板功能(ctrl + c)在 Firefox 无头模式下不起作用【英文标题】:Python-Selenium: Clipboard functionality (ctrl + c) not working in Firefox headless mode 【发布时间】:2020-04-12 00:27:21 【问题描述】:

我在 firefox 无头模式下使用 ActionChains 函数,但它不起作用。我有这个滚动的 div code_scroll = driver.find_element_by_class_name('CodeMirror-scroll') 我想在这个 div 内双击,然后复制/粘贴整个文本。 double_click() 功能工作正常,我已经对其进行了测试,但我认为 key_down/keyupsend_keys() 功能无法正常工作。底线:文本未被复制。

附:代码在正常模式下运行良好。

驱动配置:

options = webdriver.FirefoxOptions()
options.add_argument('--headless')
options.add_argument('--no-sandbox')
driver = webdriver.Firefox(options=options, capabilities=capa,executable_path=r''+os.path.dirname(os.path.abspath(__file__))+'\geckodriver.exe')

代码:

code_scroll = driver.find_element_by_class_name('CodeMirror-scroll')
actions = ActionChains(driver)
actions.double_click(code_scroll).perform()
actions.key_down(Keys.CONTROL)
actions.send_keys('a').perform()
actions.send_keys('c').perform()
actions.key_up(Keys.CONTROL)
function_body_content = pyperclip.paste()

关于设置窗口的手动大小,我已经尝试了几个答案,但都没有奏效。

已经尝试过的解决方案:

1) driver.set_window_size(1440, 900)
2) options.add_argument("--window-size=1920, 1480")
3) options.add_argument('window-size=1920x1480')
4) options.add_argument('--width=1920')
   options.add_argument('--height=1480')

【问题讨论】:

【参考方案1】:

它不起作用的是无头 chrome 或 firefox。似乎这是一种错误。 但是你可以使用 PhantomJs webdriver,它允许剪贴板粘贴,

【讨论】:

以上是关于Python-Selenium:剪贴板功能(ctrl + c)在 Firefox 无头模式下不起作用的主要内容,如果未能解决你的问题,请参考以下文章

windows常见快捷键

Python-Selenium:Chrome 无头设置不适用于“WebDriverWait”

python-selenium登陆今日头条

python-selenium自动化测试网页

python-selenium自动化测试网页

浏览器通用快捷键