Lat*_*ass 0 python selenium google-chrome selenium-chromedriver
我在Mac OS X上使用selenium和python 3.6.3.
此代码运行正常,打开谷歌铬和铬保持打开:
chrome_options = Options()
chrome_options.binary_location="../Google Chrome"
chrome_options.add_argument("disable-infobars");
driver = webdriver.Chrome(chrome_options=chrome_options)
driver.get("http://www.google.com/")
Run Code Online (Sandbox Code Playgroud)
但是在代码包含在函数内部后,浏览器会在打开页面后立即终止:
def launchBrowser():
chrome_options = Options()
chrome_options.binary_location="../Google Chrome"
chrome_options.add_argument("disable-infobars");
driver = webdriver.Chrome(chrome_options=chrome_options)
driver.get("http://www.google.com/")
launchBrowser()
Run Code Online (Sandbox Code Playgroud)
我想在保持浏览器打开的同时在函数内使用相同的代码.
Ano*_*oah 13
为了使浏览器保持打开状态,我这样做:
from selenium import webdriver
from selenium.webdriver.chrome.options import Options
def browser_function():
driver_path = "path/to/chromedriver"
chr_options = Options()
chr_options.add_experimental_option("detach", True)
chr_driver = webdriver.Chrome(driver_path, options=chr_options)
chr_driver.get("https://target_website.com")
Run Code Online (Sandbox Code Playgroud)
只需简单地添加:
while(True):
pass
Run Code Online (Sandbox Code Playgroud)
到你的函数结束。它会是这样的:
def launchBrowser():
chrome_options = Options()
chrome_options.binary_location="../Google Chrome"
chrome_options.add_argument("disable-infobars");
driver = webdriver.Chrome(chrome_options=chrome_options)
driver.get("http://www.google.com/")
while(True):
pass
launchBrowser()
Run Code Online (Sandbox Code Playgroud)
我的猜测是驱动程序被垃圾收集,在C++中,函数(或类)中的对象在脱离上下文时会被破坏.Python不是以相同的方式工作,但它是一种垃圾收集语言.一旦不再引用对象,将收集对象.
要解决您的问题,您可以将对象引用作为参数传递,或返回它.
def launchBrowser():
chrome_options = Options()
chrome_options.binary_location="../Google Chrome"
chrome_options.add_argument("start-maximized");
driver = webdriver.Chrome(chrome_options=chrome_options)
driver.get("http://www.google.com/")
return driver
driver = launchBrowser()
Run Code Online (Sandbox Code Playgroud)
小智 5
一旦驱动程序的变量超出范围,浏览器就会自动处理。因此,为了避免退出浏览器,您需要在全局变量上设置驱动程序的实例:
Dim driver As New ChromeDriver
Private Sub Use_Chrome()
driver.Get "https://www.google.com"
' driver.Quit
End Sub
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
6020 次 |
| 最近记录: |