繁体   English   中英

Selenium 可与 Chrome 一起使用,但不能与无头 Chrome 一起使用

[英]Selenium working with Chrome, but not headless Chrome

我已经使用 Selenium 和 PhantomJS 开发了几个 Python 脚本。 在走向自动下载的过程中,我切换到(带头的)Firefox(有效),然后是带有无头选项的 Chrome,这样我就不会在我面前打开浏览器。

我的第一个脚本访问一个页面和几个 HTML 元素,与 Headless Chrome 完美配合。

然而,第二个仅适用于带头的 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()

我已经使用 Selenium 和 PhantomJS 开发了几个 Python 脚本。 在走向自动下载的过程中,我切换到(带头的)Firefox(有效),然后是带有无头选项的 Chrome,这样我就不会在我面前打开浏览器。

我的第一个脚本访问一个页面和几个 HTML 元素,与 Headless Chrome 完美配合。

然而,第二个仅适用于带头的 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()

我已经使用 Selenium 和 PhantomJS 开发了几个 Python 脚本。 在走向自动下载的过程中,我切换到(带头的)Firefox(有效),然后是带有无头选项的 Chrome,这样我就不会在我面前打开浏览器。

我的第一个脚本访问一个页面和几个 HTML 元素,与 Headless Chrome 完美配合。

然而,第二个仅适用于带头的 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()

我已经使用 Selenium 和 PhantomJS 开发了几个 Python 脚本。 在走向自动下载的过程中,我切换到(带头的)Firefox(有效),然后是带有无头选项的 Chrome,这样我就不会在我面前打开浏览器。

我的第一个脚本访问一个页面和几个 HTML 元素,与 Headless Chrome 完美配合。

然而,第二个仅适用于带头的 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()

我已经使用 Selenium 和 PhantomJS 开发了几个 Python 脚本。 在走向自动下载的过程中,我切换到(带头的)Firefox(有效),然后是带有无头选项的 Chrome,这样我就不会在我面前打开浏览器。

我的第一个脚本访问一个页面和几个 HTML 元素,与 Headless Chrome 完美配合。

然而,第二个仅适用于带头的 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()

我已经使用 Selenium 和 PhantomJS 开发了几个 Python 脚本。 在走向自动下载的过程中,我切换到(带头的)Firefox(有效),然后是带有无头选项的 Chrome,这样我就不会在我面前打开浏览器。

我的第一个脚本访问一个页面和几个 HTML 元素,与 Headless Chrome 完美配合。

然而,第二个仅适用于带头的 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()

我已经使用 Selenium 和 PhantomJS 开发了几个 Python 脚本。 在走向自动下载的过程中,我切换到(带头的)Firefox(有效),然后是带有无头选项的 Chrome,这样我就不会在我面前打开浏览器。

我的第一个脚本访问一个页面和几个 HTML 元素,与 Headless Chrome 完美配合。

然而,第二个仅适用于带头的 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()

对于我的情况,headless 不起作用,因为我在代理后面。 显然,Chrome 可以使用系统代理,但 Headless 不使用系统代理。

我只需要提供代理,然后无头(以及 Chrome)工作。

options.add_argument('--proxy-server=http://myproxy:port')

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM