使用 ChromeDriver 测试


ChromeDriver 项目主页

WebDriver 是一个开源工具,用于跨多个浏览器自动测试 Web 应用程序。它提供导航到网页、用户输入、JavaScript 执行等功能。ChromeDriver 是一个独立的服务器,它为 Chromium 实现 WebDriver 的线协议。ChromeDriver 可用于 Android 上的 Chrome 和桌面上的 Chrome(Mac、Linux、Windows 和 ChromeOS)。

NW.js 提供了一个定制的 ChromeDriver,用于自动测试基于 NW.js 的应用程序。您可以将其与 selenium 等工具一起使用。

入门

以下工作流程使用 selenium-python 来驱动测试。您可以使用任何语言端口来使用 Selenium 与 chromedriver 协同工作。

安装

  • 从 NW.js 网站下载 ChromeDriver。它位于 SDK 构建中。
  • 解压缩包并将 chromedriver 放置在包含 NW.js 二进制文件的同一目录下:Linux 为 nw,Windows 为 nw.exe,Mac 为 node-webkit.app
  • 在您的项目中安装 selenium-python
    pip install selenium
    

运行

假设您的应用程序显示了一个用于从远程搜索的表单。该页面基本上是这样的

<form action="http://mysearch.com/search" method="GET">
    <input type="text" name="q"><input type="submit" value="Submit">
</form>

编写一个 Python 脚本来自动填写搜索框并提交表单

import time
from selenium import webdriver
from selenium.webdriver.chrome.options import Options
chrome_options = Options()
chrome_options.add_argument("nwapp=/path/to/your/app")

driver = webdriver.Chrome(executable_path='/path/to/nwjs/chromedriver', chrome_options=chrome_options)

time.sleep(5) # Wait 5s to see the web page
search_box = driver.find_element_by_name('q')
search_box.send_keys('ChromeDriver')
search_box.submit()
time.sleep(5) # Wait 5s to see the search result
driver.quit()

有关 selenium-python 的详细文档,请参阅 http://selenium-python.readthedocs.org/

对上游 chromedriver 的修改

  • chromedriver 默认情况下已修改为在同一目录中查找 NW 可执行文件。

  • 如果您想将非开关参数传递给命令行,则添加了额外的选项 nwargs

    import time
    from selenium import webdriver
    from selenium.webdriver.chrome.options import Options
    chrome_options = Options()
    chrome_options.add_argument("nwapp=/path/to/your/app")
    chrome_options.add_experimental_option("nwargs", ["arg1", "arg2"])
    
    driver = webdriver.Chrome(executable_path='/path/to/nwjs/chromedriver', chrome_options=chrome_options)