Mac安装 Selenium
安装 Selenium
pip install selenium
安装Chrome浏览器驱动chromedriver
查看已安装谷歌版本
可以看到本机上的Chrome版本是 109.0.5414.87,下载对应的chromderiver
https://registry.npmmirror.com/binary.html?path=chromedriver/
下载后,将zip包解压,然后在终端处,通过mv指令将chromedriver文件移动到/usr/local/bin路径下
进入到/usr/local/bin路径下,输入指令:xattr -d com.apple.quarantine chromedriver,将chromedriver的com.apple.quarantine属性去除,避免运行时因为系统的安全机制导致chromedriver无法正常运行
xattr -d com.apple.quarantine chromedriver
在pycharm中,打开py文件,输入以下代码来校验整个selenium+webdriver环境是否正常。如果浏览器正常启动,则表示环境部署全部成功
from selenium import webdriver
driver = webdriver.Chrome()
driver.get('http://www.baidu.com')
driver.implicitly_wait(10)
driver.find_element('xpath', '//*[@id="kw"]').send_keys('黄财财')
driver.find_element('id', 'su').click()
解决python运行selenium程序执行完后,Chrome浏览器自动关闭的问题
遇到问题:
最近在学Selenium的时候遇到一个问题,当我执行完程序,浏览器自动关闭了,我在程序中也没有写driver.quit()或driver.close()方法,已检查浏览器版本和webdriver版本是相同的
from selenium import webdriver
def run_webdriver():
options = webdriver.ChromeOptions()
options.add_argument('--start-maximized')
driver=webdriver.Chrome(options=options)
driver.get('https://www.baidu.com')
if __name__ == '__main__':
run_webdriver()
查找原因:
进过一番百度,查到了大致原因,在函数内执行的浏览器操作,在函数执行完毕之后,程序内所有的步骤都结束了,关于这段程序的进程也就结束了,浏览器包含在内;如果将浏览器全局后,打开浏览器不在函数内部,函数里面的程序执行完是不会关闭浏览器的。
解决方法:
方法一)设置option.add_experimental_option("detach", True)不自动关闭浏览器
from selenium import webdriver
def run_webdriver():
options = webdriver.ChromeOptions()
options.add_experimental_option('detach', True) #不自动关闭浏览器
options.add_argument('--start-maximized')#浏览器窗口最大化
driver=webdriver.Chrome(options=options)
driver.get('https://www.baidu.com')
if __name__ == '__main__':
run_webdriver()
方法二)设置全局driver = '' ,在函数里global driver driver= webdriver.Chrome(),也是可以的,不会关闭
from selenium import webdriver
driver=''
def run_webdriver():
global driver
options = webdriver.ChromeOptions()
options.add_argument('--start-maximized')#浏览器窗口最大化
driver=webdriver.Chrome(options=options)
driver.get('https://www.baidu.com')
if __name__ == '__main__':
run_webdriver()
方法三)同方法二,设置全局变量,即把打开浏览器的操作放在函数外部,函数执行完毕,浏览器就不会关闭
from selenium import webdriver
options = webdriver.ChromeOptions()
options.add_argument('--start-maximized') # 浏览器窗口最大化
driver = webdriver.Chrome(options=options)
def run_webdriver(url):
driver.get(url)
if __name__ == '__main__':
url='https://www.baidu.com'
run_webdriver(url)
Chrome正在受到自动软件的控制
from selenium import webdriver
options = webdriver.ChromeOptions()
options.add_experimental_option("excludeSwitches",['enable-automation'])
driver = webdriver.Chrome(options=options)
反爬虫
driver = webdriver.Chrome(options=options)
driver.execute_cdp_cmd("Page.addScriptToEvaluateOnNewDocument", {
"source": """
Object.defineProperty(navigator, 'webdriver', {
get: () => undefined
})
"""
})
参考资料
解决python运行selenium程序执行完后,Chrome浏览器自动关闭的问题
https://www.cnblogs.com/muxiaomu/p/16669022.html