13. Remote Webdriver

场景

简单来说,我们可以把remote webdriver理解成在远程机器上运行webdriver脚本。

想像一下最简单的一个应用场景:你和你的同事两人一起开发一段webdriver脚本,然后你们需要在一个公共的环境去运行这段脚本。为什么要在公 共的环境运行?那是因为每个人的开发机器是有差异的,但是如果用同一台测试机的话,那么环境差异的因素就可以基本排除。我们应该经常听到开发说这样的 话:"这个bug在我的环境上是好的啊!"。因为运行环境不同而造成的bug比比皆是,因此我们需要一个统一的运行环境来消除差异。

在这样的应用场景下,我们就需要使用remote webdriver,我们在本地开发脚本,然后调用remote webdriver,在测试机器上执行我们的测试。

安装

Remote Webdriver的安装很简单。

首先下载selenium-server-standalone-LAST-VERSION.jar

然后运行java -jar selenium-server-standalone.jar命令。如果没有错误出现的话,这台机器已经被配置成远程机器了,以后webdriver就会在这台机器上启动浏览器,执行脚本。

启动driver

下面的代码可以启动远程机器上的driver,默认情况下这会打开localhost也就是本机上的firefox浏览器

    driver = Selenium::WebDriver.for(:remote)

如果你的remote webdriver不在本地运行,而且你又想指定除firefox以外的浏览器,那么使用下面的代码

    driver = Selenium::WebDriver.for(:remote, :url => "http://myserver:4444/wd/hub", :desired_capabilities => :chrome)

通常情况下myserver可以是192.168.x.x之类的ip地址。

另外还可以通过配置Selenium::WebDriver::Remote::Capabilities来实现更加定制化的浏览器配置,这个超出本文范围,不做描述。

使用watir-webdriver启动driver

可以使用下面的代码让watir-webdriver也使用remote webdriver模式

    browser = Watir::Browser.new(:remote, {desired_capabilities: :chrome, url: "http://myserver:4444/wd/hub"})

java版本

    // We could use any driver for our tests...
    DesiredCapabilities capabilities = new DesiredCapabilities();

    // ... but only if it supports javascript
    capabilities.setJavascriptEnabled(true);

    // Get a handle to the driver. This will throw an exception
    // if a matching driver cannot be located
    WebDriver driver = new RemoteWebDriver(capabilities);

    // Query the driver to find out more information
    Capabilities actualCapabilities = ((RemoteWebDriver) driver).getCapabilities();

    // And now use it
    driver.get("http://www.google.com");

注意,java版本的代码我没有时间去调试,这里只是把wiki上的代码放出来而已。另外remote server在发生错误时会自动截图,下面是获得截图的代码

    public String extractScreenShot(WebDriverException e) {
        Throwable cause = e.getCause();
        if (cause instanceof ScreenshotException) {
            return ((ScreenshotException) cause).getBase64EncodedScreenshot();
        }
        return null;
    }

python版本

    c = webdriver.DesiredCapabilities.CHROME
    driver = webdriver.Remote(command_executor=‘http://127.0.0.1:4444/wd/hub‘, desired_capabilities=c)

注意,python binding的wiki中使用的启动remote webdriver的代码跟我上面给出的不太相同,可能是因为我的selenium版本较低(30),最新版本的同学可以试试wiki上的代码。

13. Remote Webdriver

时间: 2024-10-09 12:58:09

13. Remote Webdriver的相关文章

webDriver API——第11部分Remote WebDriver

The WebDriver implementation. class selenium.webdriver.remote.webdriver.WebDriver(command_executor='http://127.0.0.1:4444/wd/hub', desired_capabilities=None, browser_profile=None, proxy=None, keep_alive=False) Bases: object Controls a browser by send

Appium Remote webdriver调用

remote webdriver的模板 默认开启4723端口接受webdriver请求 默认开启4724用于和android通讯 #coding:utf-8 #Import the common package import os import unittest from appium import webdriver from time import sleep #设置路径信息 PATH = lambda p: os.path.abspath( os.path.join(os.path.dir

selenium之WebDriver API

自动化只要掌握四步操作:获取元素,操作元素,获取返回结果,断言(返回结果与期望结果是否一致),最后自动出测试报告,元素定位在这四个环节中是至关重要的,如果说按学习精力分配的话,元素定位占70%:操作元素10%,获取返回结果10%:断言10%.如果一个页面上的元素不能被定位到,那后面的操作就无法继续了.而WebDriver 属于Selenium体系设计出来操作浏览器的一套API,它支持多种语言,Selenium WebDriver只是python的一个第三方框架,也就是说是一个实现web自动化的第

python3+selenium 3.13 + geckodriver 21.0,提示ConnectionResetError,切换会较低版本的driver即可

学习selenium时,如果sleep时间大于等于5秒,就会提示ConnectionResetError: [Errno 54] Connection reset by peer.换成chrome浏览器,可以正常运行. #demo.py from selenium import webdriver from time import sleep, ctime #chrome #driver = webdriver.Chrome(executable_path='//Users/csj/Deskto

Python+WebDriver 启动Firefox时使用profile

1.建立FireFox的profile 1.1 dos切换到Firefox的安装目录,例如:C:\Program Files\Mozilla Firefox 1.2 dos中执行命令firefor -p,弹出创建窗口(如下:),新增一个profile.此处建立在c:\xxx下 1.3 创建完成后,点击上图中的"启动Firefox",在c:\xxx下可以看见生成一些文件(最重要的貌似是cert8.db) 2.写一个测试脚本test.py,执行观察结果 2.1脚本如下: #coding=u

webDriver API——第9部分Firefox WebDriver

class selenium.webdriver.firefox.webdriver.WebDriver(firefox_profile=None, firefox_binary=None, timeout=30, capabilities=None, proxy=None) Bases: selenium.webdriver.remote.webdriver.WebDriver quit() Quits the driver and close every associated window.

webDriver API——第10部分Chrome WebDriver

class selenium.webdriver.chrome.webdriver.WebDriver(executable_path='chromedriver', port=0, chrome_options=None, service_args=None, desired_capabilities=None, service_log_path=None) Bases: selenium.webdriver.remote.webdriver.WebDriver Controls the Ch

Selenium_Python接口-实例对象操作类WebDriver

WebDriver路径:from selenium.webdriver.remote.webdriver import WebDriver WebDriver内容:打开指定网页.执行js脚本.获取页面url.cook操作.多窗口及内嵌窗口的切换.窗口尺寸.窗口尺寸设置.窗口截图等 接口内容: # Licensed to the Software Freedom Conservancy (SFC) under one# or more contributor license agreements.

webdriver函数

import sys; print('%s %s' % (sys.executable or sys.platform, sys.version)) PyDev console: starting. C:\Python27\python.exe 2.7.10 (default, May 23 2015, 09:40:32) [MSC v.1500 32 bit (Intel)] import subprocess import time import scrapy from selenium i