在 Selenium 中设置不同的浏览器进行 web application 测试

在我们的博客中, 记录了我们在开发过程中所使用的技术和遇到的问题, 希望作为其他开发和设计者的一个学习交流平台.

在 Selenium 中设置不同的浏览器进行 web application 测试


通常我们当我们需要测试JavaScipt, 兼容性或模拟用户行为时, 我们会用使用 Selenium 和 django 的 LiveServerTestCase Class. 默认情况下 Selenium 的 WebDriver 启动的是 Firefox 浏览器, 那么如何使用 Selenium 配合其他浏览器呢? 当然 Selenium 是支持其他浏览器的, 但如果想要使用其他浏览器, 需要要我们做一点不同的设置. 接下来, 我们就演示一下如何设置:

1. Firefox

首先我们演示一下默认情况下如何打开 google.com 并截图:

    from selenium import webdriver

    browser = webdriver.Firefox()
    browser.get('http://www.google.com')
    browser.save_screenshot('screen.png')
    browser.quit()

2. Chromium 或 Chrome

首先你要安装有 Google Chrome 浏览器. 你还需要chromedriver, 你可以在Chrome Driver官网上下载到

在 Selenium 中使用 Chrome:

    from selenium import webdriver

    browser = webdriver.Chrome(executable_path='/usr/lib/chromium-browser/chromedriver')
    browser.get('http://www.google.com/')
    browser.save_screenshot('screen_chromium.png')
    browser.quit()

3. Android 浏览器

在 Android 设备上运行 Selenium 的话, 你必须安装 Selenium server APK, 并启动该APK.

如果是在虚拟机中运行的话, 则需要使用 adb 安装 Selenium server APK:

显示所有 Android 虚拟机:

    ./adb devices

记下你想要安装的虚拟机ID, 并安装:

    ./adb -s ID_NUMBER -e install -r android-server-*.apk

再启动该虚拟机.

我们还需要为已经启动的虚拟机设置端口映射, 这是为了让 Selenium 能够与服务器交流:

    ./adb -s ID_NUMBER forward tcp:8080 tcp:8080

如果使用的是真实的设备, 那我们只需要使用设备的真实IP地址即可:

    from selenium import webdriver

    desired_capabilities = webdriver.DesiredCapabilities.ANDROID
    desired_capabilities['deviceOrientation'] = 'landscape' #portrait

    browser = webdriver.Remote("http://localhost:8080/wd/hub", desired_capabilities=desired_capabilities)
    browser.get('http://www.google.com')
    browser.save_screenshot('screen_android.png')
    browser.quit()

4. iOS (iPad, iPhone)

iOS只能在OSX上使用. 你可以查看ios-driver.

5. 在线 Selenium 服务

如果你想方便的使用 Selenium, 那么也可以尝试 saucelabs.comtestingbot.com. 他们提供了在线 Selenium 测试 API.


原文链接: http://weiguda.com/blog/47/