欢迎您访问程序员文章站本站旨在为大家提供分享程序员计算机编程知识!
您现在的位置是: 首页

使用浏览器的HEADLESS模式報錯ElementNotInteractableException

程序员文章站 2022-05-27 09:01:54
...

1.实践 Selenium + HEADLESS
使用浏览器的HEADLESS模式进行自动化测试,你需要先满足以下前提:

Python + Selenium 运行环境
Chrome 59+ 或者 Firefox 55+
ChromeDriver 或者 GeckoDriver 最新版已加入PATH,不加入PATH要提供絕對路徑

2.Chrome版实例

from time import sleep
from selenium import webdriver
from selenium.webdriver.chrome.options import Options
 
options = Options()
options.add_argument('--headless')
options.add_argument('--disable-gpu') # 允许在无GPU的环境下运行,可选
options.add_argument('--window-size=1920x1080') # 建议设置
 
browser = webdriver.Chrome(chrome_options=options)
browser.get('https://www.baidu.com')
browser.find_element_by_id('kw').send_keys('HELLO')
browser.find_element_by_id('su').click()
 
sleep(1) # 简单粗暴的等待,实际项目中勿用
assert browser.title == u'HELLO_百度搜索'
browser.save_screenshot('chrome-headless-test.png')

3.Firefox版实例

from time import sleep
from selenium import webdriver
from selenium.webdriver.firefox.options import Options
 
options = Options()
options.add_argument('--headless')
# options.add_argument('--window-size=1920x1080') # Firefox无效
 
browser = webdriver.Firefox(firefox_options=options)
browser.set_window_size(1280, 1024) # 启动后设置浏览器大小,但是高度会随着访问的网页变化
 
browser.get('https://www.baidu.com')
browser.find_element_by_id('kw').send_keys('HELLO')
browser.find_element_by_id('su').click()
 
sleep(1)
assert browser.title == u'HELLO_百度搜索'
browser.save_screenshot('firefox-headless-test.png')

4.注意:
在實際運用工作項目的時候,chrome版最好加上下列設置,否則會報ElementNotInteractableException

options.add_argument('--window-size=1920x1080')

當然,也可能是等待時間不夠導致,但是我用有界面方式運行的時候沒問題且保證了*面運行sleep(5)也是抱這個錯誤。加上就沒問題了
使用浏览器的HEADLESS模式報錯ElementNotInteractableException
5.另外:

如果chromedriver.exe的路徑沒有寫入PATH,要在參數中加上指定路徑:

driver = webdriver.Chrome(executable_path=(r'C:\Program Files\Google\Chrome\Application\chromedriver.exe'), chrome_options=chrome_options)

其他*面瀏覽器學習貼:
1.Python 爬虫杂记 - Chrome Headless
2.selenium+webDriver+headless Chrome实现python爬虫
3.使用浏览器的HEADLESS模式进行自动化测试
4.python-使用無頭瀏覽器時出現ElementNotInteractableException
5.Chrome Headless模式(一)

相关标签: python selenium