selenium可与Chrome一起使用,但不能与无头Chrome一起使用
我已经使用Selenium和最初的PhantomJS开发了一些Python脚本。在走向自动下载时,我改用了(带头的)Firefox(运行了),然后选择了无头选项的Chrome,这样我就不会打开浏览器了。
我的第一个脚本访问一个页面和几个HTML元素,与无头Chrome完美搭配。
但是第二个
。如果添加“无头”选项,它将不再起作用。当我尝试以无头模式打印HTML以查看为什么找不到所需的HTML元素时,我所拥有的只是:
<html xmlns="http://www.w3.org/1999/xhtml"><head></head><body></body></html>
使用Chrome浏览器,我可以打印完整的HTML。这就是我启动无头Chrome的方式:
options = webdriver.ChromeOptions()options.add_argument("--ignore-certificate-errors")
options.add_argument("headless")
driver = webdriver.Chrome(chrome_options=options)
再次注意,这在我的另一个脚本中有效。唯一的区别是我需要登录才能访问该页面,但是即使那样,为什么它也可以与头部配合使用?通过填写表格,我的脚本可以自动登录。
Python:3.6.1,Chrome:60.0.3112.78(64位),Selenium:3.4.3
任何想法?谢谢。
url = 'https://10.11.227.21/tmui/'driver.get(url + "login.jsp")
html_source = driver.page_source
print(html_source)
blocStatus = WebDriverWait(driver, TIMEOUT).until(EC.presence_of_element_located((By.ID, "username")))
inputElement = driver.find_element_by_id("username")
inputElement.send_keys('actualLogin')
inputElement = driver.find_element_by_id("passwd")
inputElement.send_keys('actualPassword')
inputElement.submit()
回答:
我有和您一样的经历,并通过使用xvfb和pyvirtualdisplay解决了这一问题。
我使用chromedrive = v2.3.1,chrome-browser = v60和Selenium = 3.4.3
在无头Chrome中,某些脚本似乎无法按预期工作。
请参阅https://gist.github.com/addyosmani/5336747中的
vpassapera评论。
像下面这样尝试,
from pyvirtualdisplay import Displaydisplay = Display(visible=0, size=(800, 600))
display.start()
# Do Not use headless chrome option
# options.add_argument('headless')
url = 'https://10.11.227.21/tmui/'
driver.get(url + "login.jsp")
html_source = driver.page_source
print(html_source)
blocStatus = WebDriverWait(driver, TIMEOUT).until(EC.presence_of_element_located((By.ID, "username")))
inputElement = driver.find_element_by_id("username")
inputElement.send_keys('actualLogin')
inputElement = driver.find_element_by_id("passwd")
inputElement.send_keys('actualPassword')
inputElement.submit()
display.stop()
xvfb必须使用“ pyvortualdisplay”
$ sudo apt-get install -y xvfb
以上是 selenium可与Chrome一起使用,但不能与无头Chrome一起使用 的全部内容, 来源链接: utcz.com/qa/405420.html