Maz*_*Maz 40 python selenium selenium-chromedriver selenium-webdriver google-chrome-headless
我正在研究一个用于网络搜索的python脚本,并且已经走上了使用Chromedriver作为其中一个软件包的道路.我希望这在没有任何弹出窗口的情况下在后台运行.我在chromedriver上使用'headless'选项,它似乎没有显示浏览器窗口,但是,我仍然看到.exe文件正在运行.看到我正在谈论的截图.截图
这是我用来启动ChromeDriver的代码:
options = webdriver.ChromeOptions()
options.add_experimental_option("excludeSwitches",["ignore-certificate-errors"])
options.add_argument('headless')
options.add_argument('window-size=0x0')
chrome_driver_path = "C:\Python27\Scripts\chromedriver.exe"
Run Code Online (Sandbox Code Playgroud)
我试图做的事情是将选项中的窗口大小改为0x0,但我不确定是什么,因为.exe文件仍然弹出.
有关如何做到这一点的任何想法?
我使用的是Python 2.7 FYI
Dan*_*ous 74
它应该如下所示:
from selenium import webdriver
from selenium.webdriver.chrome.options import Options
options = Options()
options.add_argument('--headless')
options.add_argument('--disable-gpu') # Last I checked this was necessary.
driver = webdriver.Chrome(CHROMEDRIVER_PATH, chrome_options=options)
Run Code Online (Sandbox Code Playgroud)
这适用于我使用Python 3.6,我相信它也适用于2.7.
更新2018-10-26:这些天你可以这样做:
from selenium import webdriver
from selenium.webdriver.chrome.options import Options
options = Options()
options.headless = True
driver = webdriver.Chrome(CHROMEDRIVER_PATH, chrome_options=options)
Run Code Online (Sandbox Code Playgroud)
Deb*_*anB 48
在无头模式下使用Selenium Client 3.11.x,ChromeDriver v2.38和Google Chrome v65.0.3325.181时,您必须考虑以下几点:
--headless
以无头模式调用Chrome.--disable-gpu
--disable-gpu
在Linux系统和MacOS上不需要make --disable-gpu flag不需要的标志.--disable-gpu
标志上的断言也将在Windows系统上变得不必要.start-maximized
最大化的视口需要参数.
您可能需要添加参数--no-sandbox
以绕过操作系统安全模型.
Windows代码块示例:
from selenium import webdriver
from selenium.webdriver.chrome.options import Options
options = Options()
options.add_argument("--headless") # Runs Chrome in headless mode.
options.add_argument('--no-sandbox') # Bypass OS security model
options.add_argument('--disable-gpu') # applicable to windows os only
options.add_argument('start-maximized') #
options.add_argument('disable-infobars')
options.add_argument("--disable-extensions")
driver = webdriver.Chrome(chrome_options=options, executable_path=r'C:\path\to\chromedriver.exe')
driver.get("http://google.com/")
print ("Headless Chrome Initialized on Windows OS")
Run Code Online (Sandbox Code Playgroud)示例Linux代码块:
from selenium import webdriver
from selenium.webdriver.chrome.options import Options
options = Options()
options.add_argument("--headless") # Runs Chrome in headless mode.
options.add_argument('--no-sandbox') # # Bypass OS security model
options.add_argument('start-maximized')
options.add_argument('disable-infobars')
options.add_argument("--disable-extensions")
driver = webdriver.Chrome(chrome_options=options, executable_path='/path/to/chromedriver')
driver.get("http://google.com/")
print ("Headless Chrome Initialized on Linux OS")
Run Code Online (Sandbox Code Playgroud)通过以下方法的可用性,以编程方式在无头模式下调用Google Chrome浏览器变得更加容易:set_headless(headless=True)
文件:
set_headless(headless=True)
Sets the headless argument
Args:
headless: boolean value indicating to set the headless option
Run Code Online (Sandbox Code Playgroud)示例代码:
from selenium import webdriver
from selenium.webdriver.chrome.options import Options
options = Options()
options.set_headless(headless=True)
driver = webdriver.Chrome(options=options, executable_path=r'C:\path\to\chromedriver.exe')
driver.get("http://google.com/")
print ("Headless Chrome Initialized")
driver.quit()
Run Code Online (Sandbox Code Playgroud)注意:
--disable-gpu
参数在内部实现.
要在无头模式下调用Chrome浏览器,您现在可以--headless
通过Options()
类设置属性,如下所示:
示例代码:
from selenium import webdriver
from selenium.webdriver.chrome.options import Options
options = Options()
options.headless = True
driver = webdriver.Chrome(options=options, executable_path=r'C:\path\to\chromedriver.exe')
driver.get("http://google.com/")
print ("Headless Chrome Initialized")
driver.quit()
Run Code Online (Sandbox Code Playgroud)Edu*_*tos 21
chrome_options = webdriver.ChromeOptions()
chrome_options.headless = True
self.driver = webdriver.Chrome(
executable_path=DRIVER_PATH, chrome_options=chrome_options)
Run Code Online (Sandbox Code Playgroud)
Zub*_*yer 11
更新 在我的情况下工作正常:
from selenium import webdriver
options = webdriver.ChromeOptions()
options.headless = True
driver = webdriver.Chrome(CHROMEDRIVER_PATH, options=options)
Run Code Online (Sandbox Code Playgroud)
2020 年刚刚更改。对我来说很好用。
所以在更正我的代码后:
options = webdriver.ChromeOptions()
options.add_experimental_option("excludeSwitches",["ignore-certificate-errors"])
options.add_argument('--disable-gpu')
options.add_argument('--headless')
chrome_driver_path = "C:\Python27\Scripts\chromedriver.exe"
Run Code Online (Sandbox Code Playgroud)
运行脚本时 .exe 文件仍然出现。尽管这确实消除了一些告诉我“无法启动 GPU 进程”的额外输出。
最终的工作是使用 .bat 文件运行我的 Python 脚本
所以基本上,
打开文本编辑器,并转储以下代码(当然编辑到您的脚本)
c:\python27\python.exe c:\SampleFolder\ThisIsMyScript.py %*
保存 .txt 文件并将扩展名更改为 .bat
所以这只是在命令提示符中打开了脚本,ChromeDriver 似乎在这个窗口中运行,而没有弹出到我的屏幕前面,从而解决了问题。
.exe 无论如何都会运行。根据谷歌 - “以无头模式运行,即没有 UI 或显示服务器依赖项。”
最好在命令行参数前加上 2 个破折号,即 options.add_argument('--headless')
在headless模式下,也建议禁用GPU,即 options.add_argument('--disable-gpu')
归档时间: |
|
查看次数: |
60965 次 |
最近记录: |