driver =webdriver.Remote(
command_executor=’http://127.0.0.1:4444/wd/hub’,

desired_capabilities=DesiredCapabilities.CHROME)

’http://127.0.0.1:4444/wd/hub’可以看作一个字符串,对其进行参数化没有什么困难。
那么 DesiredCapabilities.CHROME 里面包含了什么东西呢?

>>> fromselenium.webdriver.common.desired_capabilitiesimport DesiredCapabilities
>>> p=DesiredCapabilities.CHROME
>>> printp
{'platform': 'ANY', 'browserName': 'chrome', 'version': '', 'javascriptEnabled':True}

我们将 DesiredCapabilities.CHROME 的内容打印输出,发现其本身是一个字典。
'platform':'ANY' 平台默认可以是任何(window,MAC,android)。
'browserName':'chrome' 浏览器名字是 chrome 。
'version':'' 浏览器的版本默认为空。
'javascriptEnabled':True javascript 启动状态为 True

pythonwebdriverAPI 提供了不同平台及浏览器的参数:

ANDROID = {'platform': 'ANDROID', 'browserName': 'android', 'version': '', 'javascriptEnabled': True}

CHROME = {'platform': 'ANY', 'browserName': 'chrome', 'version': '', 'javascriptEnabled': True}

FIREFOX = {'platform': 'ANY', 'browserName': 'firefox', 'version': '', 'javascriptEnabled': True}

HTMLUNIT = {'platform': 'ANY', 'browserName': 'htmlunit', 'version': ''}

HTMLUNITWITHJS = {'platform': 'ANY', 'browserName': 'htmlunit', 'version': 'firefox', 'javascriptEnabled': True}

INTERNETEXPLORER = {'platform': 'WINDOWS', 'browserName': 'internet explorer', 'version': '', 'javascriptEnabled': True}

IPAD = {'platform': 'MAC', 'browserName': 'iPad', 'version': '', 'javascriptEnabled': True}

IPHONE = {'platform': 'MAC', 'browserName': 'iPhone', 'version': '', 'javascriptEnabled': True}

SAFARI = {'platform': 'ANY', 'browserName': 'safari', 'version': '', 'javascriptEnabled': True}

PHANTOMJS = {'platform': 'ANY', 'browserName': 'phantomjs', 'version': '', 'javascriptEnabled': True}

OPERA = {'platform': 'ANY', 'browserName': 'opera', 'version': '', 'javascriptEnabled': True}

我们现在要做的是对 browserName 参数进行参数化,传入不同的浏览器,使脚本在不同的浏览器下运 行。要想运行脚本之前我们需要先启动 seleniumserver:

#coding=utf-8

import time from selenium

import webdriver fromselenium.webdriver.common.desired_capabilities import DesiredCapabilities

#浏览器数组

lists=['chrome','internet explorer']

#通过不同的浏览器执行脚本

for browser in lists:

  print browser

  driver = webdriver.Remote(

                       command_executor='http://127.0.0.1:5555/wd/hub',

                       desired_capabilities={'platform': 'ANY', 'browserName':browser, 'version': '', 'javascriptEnabled': True })
   driver.get("http://www.youdao.com")

   driver.find_element_by_name("q").send_keys("hello")

   driver.find_element_by_id("qb").click()

   time.sleep(2)
   driver.close()

selenium grid应用1-多浏览器执行用例的更多相关文章

  1. 【python+selenium】selenium grid(分布式)

    前言 原文:https://blog.csdn.net/real_tino/article/details/53467406 Selenium grid是用来分布式执行测试用例脚本的工具,比如测试人员 ...

  2. selenium grid的使用

    Selenium grid是用来分布式执行测试用例脚本的工具,比如测试人员经常要测试多浏览器的兼容性,那就可以用到grid了. selenium grid的hub相当于一个接收脚本并分发脚本的角色,n ...

  3. Selenium Grid原理

    转载: http://blog.csdn.net/five3/article/details/9428655 Selenium-Grid版本 selenium-grid分为版本1和版本2,其实它的2个 ...

  4. selenium grid 使用方法

    代码和selenium driver相同 只是 启动环境方式不同.至少启动一个hub 一个 node .如需要多个,可以使用端口进行区分. java -jar selenium-server-stan ...

  5. linux + docker + selenium grid 实现分布式执行selenium脚本

    Selenium Grid 有两个概念 hub :主节点,你可以看作 "北京总公司的测试经理". node:分支节点,你可以看作 "北京总公司的测试小兵A" 和 ...

  6. Selenium Grid跨浏览器-兼容性测试

    Selenium Grid跨浏览器-兼容性测试 这里有两台机子,打算这样演示: 一台机子启动一个作为主点节的hub 和 一个作为次节点的hub(系统windows 浏览器为ie) ip为:192.16 ...

  7. docker+selenium grid解决node执行经常卡死

    执行用例时出现下图: 可以在启动node节点容器时添加如下红色字体的参数 docker run -d -p 5903:5900 --shm-size=512m --link selenium_hub: ...

  8. 使用selenium grid分布式执行之一

    目前ui框架会做一个更新,把原有的Jenkins分布式方式换成grid方式,换成grid方式有两个好处,1.grid的资源占用比Jenkins的jnlp占用资源少 2.grid可控制不同浏览器同时跑 ...

  9. 【Selenium05篇】python+selenium实现Web自动化:读取ini配置文件,元素封装,代码封装,异常处理,兼容多浏览器执行

    一.前言 最近问我自动化的人确实有点多,个人突发奇想:想从0开始讲解python+selenium实现Web自动化测试,请关注博客持续更新! 这是python+selenium实现Web自动化第五篇博 ...

随机推荐

  1. jQuery高度及位置操作

    1. 获取滑轮位置,scrolltop:上下滚动的意思. <!DOCTYPE html> <html lang="en"> <head> < ...

  2. [SHOI2011]双倍回文 manacher

    题面: 洛谷:[SHOI2011]双倍回文‘ 题解: 首先有一个性质,本质不同的回文串最多O(n)个. 所以我们可以对于每个i,求出以这个i为结尾的最长回文串,然后以此作为长串,并判断把这个长串从中间 ...

  3. Java导出数据行写入到Excel表格:基于Apache POI

    Java导出数据行写入到Excel表格:基于Apache POI import java.io.File; import java.io.FileOutputStream; import org.ap ...

  4. 【CF625E】Frog Fights(模拟)

    [CF625E]Frog Fights(模拟) 题面 CF 洛谷 翻译: 有\(n\)只青蛙在一个被分为了\(m\)等分的圆上,对于每份顺时针依次标号. 初始时每只青蛙所在的位置是\(p_i\),速度 ...

  5. Netsh命令-网络禁用开启

    禁用无线网卡:netsh interface set interface wlan0 disabled 启用无线网卡:netsh interface set interface wlan0 enabl ...

  6. 【翻译】InterlockedIncrement内部是如何实现的?

        Interlocked系列函数可以对内存进行原子操作,它是如何实现的?     它的实现依赖于底层的CPU架构.对于某些CPU来说,这很简单,例如x86可以通过LOCK前缀直接支持Interl ...

  7. 随机抽样一致性算法(RANSAC)转载

    这两天看<计算机视觉中的多视图几何>人都看蒙了,转载一些干货看看 转自王先荣 http://www.cnblogs.com/xrwang/archive/2011/03/09/ransac ...

  8. Codeforces Round #209 (Div. 2)A贪心 B思路 C思路+快速幂

    A. Table time limit per test 1 second memory limit per test 256 megabytes input standard input outpu ...

  9. bzoj1467 Pku3243 clever Y

    1467: Pku3243 clever Y Time Limit: 4 Sec  Memory Limit: 64 MBSubmit: 313  Solved: 181[Submit][Status ...

  10. C++编译报错:重复定义

    http://note.youdao.com/noteshare?id=cb2bed862a2daae89775603168f297af