用selenium控制已打开的浏览器

用selenium控制已打开的浏览器

  • 在使用selenium进行自动化测试会遇到,手工打开浏览器,做了一部分操作后,并打开相关页面后再执行相关的自动化脚本。
    /Users/bin/Documents/project/chrome2
  • 我们可以利用Chrome DevTools协议。它允许客户检查和调试Chrome浏览器。
    打开cmd,在命令行中输入命令:
cd C:\Program Files (x86)\Google\Chrome\Application
chrome.exe --remote-debugging-port=9222 --user-data-dir="C:\Program Files (x86)\Google\Chrome\Application\selenium\AutomationProfile"
  • 对于-remote-debugging-port值,可以指定任何打开的端口。
    对于-user-data-dir标记,指定创建新Chrome配置文件的目录。它是为了确保在单独的配置文件中启动chrome,不会污染你的默认配置文件。
  • 此时会打开一个浏览器页面,我们输入百度网址,我们把它当成一个已存在的浏览器:
    现在,我们需要接管上面的浏览器。新建一个python文件,运行以下代码:
from selenium import webdriver
from selenium.webdriver.chrome.options import Options

chrome_options = Options()
chrome_options.add_experimental_option("debuggerAddress", "127.0.0.1:9222")
chrome_driver = "d:\python_tool\chromedriver.exe"
driver = webdriver.Chrome(chrome_driver, chrome_options=chrome_options)
print(driver.title)

mac版

下载ChromeDriver http://npm.taobao.org/mirrors/chromedriver/
解压后将chromedriver复制到 /usr/local/bin/ 下

/Applications/Chrome2.app/Contents/MacOS/Google\ Chrome --remote-debugging-port=9222 --user-data-dir="/Users/bin/Documents/project/chrome2"
from selenium import webdriver
from selenium.common.exceptions import NoSuchElementException
from selenium.webdriver import ActionChains
from selenium.webdriver.chrome.options import Options

chrome_options = Options()
chrome_options.add_experimental_option("debuggerAddress", "127.0.0.1:9222")
chrome_driver = "/usr/local/bin/chromedriver"
browser = webdriver.Chrome(chrome_driver, chrome_options=chrome_options)
评论