赞
踩
from selenium import webdriver import os # 进入浏览器设置 options = webdriver.ChromeOptions() # 谷歌无头模式 options.add_argument('--headless') options.add_argument('--disable-gpu') # 设置页面大小 options.add_argument('window-size=1200x600') # 设置中文 options.add_argument('lang=zh_CN.UTF-8') # 更换头部 options.add_argument('user-agent="Mozilla/5.0 (iPod; U; CPU iPhone OS 2_1 like Mac OS X; ja-jp) AppleWebKit/525.18.1 (KHTML, like Gecko) Version/3.1.1 Mobile/5F137 Safari/525.20"') # 设置代理 options.add_argument('proxy-server=' + proxy) # 不加载图片 options.add_experimental_option('prefs', {"profile.managed_default_content_settings.images": 2}) # 设置下载路径 options.add_experimental_option('prefs', {"download.default_directory": os.path.abspath('数据\\')}) # 除去“正受到自动测试软件的控制”提示框 options.add_argument('disable-infobars') # 打开开发者模式 options.add_experimental_option('excludeSwitches', ['enable-automation']) # 不使用自动化扩展 options.add_experimental_option('useAutomationExtension', False) # 去除selenium的一个指纹 browser.execute_cdp_cmd("Page.addScriptToEvaluateOnNewDocument", { "source": """ Object.defineProperty(navigator, 'webdriver', { get: () => undefined }) """ }) # 导入当前py文件目录下的chromedriver executable_path = os.path.abspath('chromedriver.exe') browser = webdriver.Chrome(executable_path=executable_path, chrome_options=options) url = "https://httpbin.org/get?show_env=1" browser.get(url) # 设置浏览器窗口大小 browser.set_window_size(1552, 800) # 删除原来的cookie browser.delete_all_cookies() # 添加cookie browser.add_cookie({'name':'ABC','value':'DEF'}) # 刷新当前页面 browser.refresh() # 通过js新打开一个窗口 page_js='window.open("https://www.baidu.com");' browser.execute_script(page_js) # 用js点击元素 button = browser.find_element_by_xpath('//*[@class="button"]') browser.execute_script("$(arguments[0]).click()",button) # 用js滑动滑动条 js = "var q=document.documentElement.scrollTop=" for i in range(1, 15): browser.execute_script(js + str(i * 100)) # 切换浏览器最新页面窗口 browser.switch_to.window(browser.window_handles[-1]) # 切换浏览器至第一个iframe框架 browser.switch_to.frame(1) # 切换浏览器的弹出框 并点击同意 self.browser.switch_to.alert.accept() # 浏览器窗口对象 browser.window_handles: list # 关闭当前窗口 browser.close() # 关闭浏览器 browser.quit()
利用Chrome DevTools协议。它允许客户检查和调试Chrome浏览器。
打开cmd,在命令行中输入命令:
chrome.exe --remote-debugging-port=9222 --user-data-dir="D:\selenum\AutomationProfile"
对于-remote-debugging-port值,可以指定任何打开的端口。
对于-user-data-dir标记,指定创建新Chrome配置文件的目录。它是为了确保在单独的配置文件中启动chrome,不会污染你的默认配置文件。
还有,不要忘了在环境变量中PATH里将chrome的路径添加进去。
此时会打开一个浏览器页面,我们输入淘宝网址,我们把它当成一个已存在的浏览器:
selenium通过设置代理,来监听该浏览器,从而控制浏览器,接管浏览器例子:
from selenium import webdriver
options = webdriver.ChromeOptions()
options.debugger_address = "127.0.0.1:9222"
browser = webdriver.Chrome(options=options)
from selenium.webdriver.common.proxy import * # 代理 myProxy = '202.202.90.20:8080' # 代理格式 proxy = Proxy({ 'proxyType': ProxyType.MANUAL, 'httpProxy': myProxy, 'ftpProxy': myProxy, 'sslProxy': myProxy, 'noProxy': '' }) profile = webdriver.FirefoxProfile() profile = get_firefox_profile_with_proxy_set(profile, proxy) profile.set_preference("general.useragent.override", user_agent) # firefox无头模式 options = webdriver.FirefoxOptions() options.add_argument('--headless') options.add_argument('--disable-gpu') options.add_argument('window-size=1200x600') executable_path = os.path.abspath('geckodriver.exe') driver=webdriver.Firefox(proxy=proxy, profile=profile, options=options, executable_path=executable_path) driver.get('https://www.baidu.com') driver.quit()
文件参考:https://blog.csdn.net/xc_zhou/article/details/80823855
Copyright © 2003-2013 www.wpsshop.cn 版权所有,并保留所有权利。