selenium python grid

  学习自动化一直都是在本机操作,感觉这样能够减少工作量确实很少。最近研究了一下分布式操作。

  开始的想法是,我在一台机器上启动脚本,然后让脚本在不同机器的不同版本的浏览器上进行跑脚本。

  需要准备的东西:

    1、jdk,以及环境变量配置好。在cmd下运行javac如果没有报错就行。

    2、python开发环境。

    3、selenium 安装好

    4、下载 selenium-server-standalone-2.45.0.jar的包。这个版本自己看,我用的是这个版本,主要是用46的报错

  一切准备好了,我用的三台机器。60机器作为我跑脚本的机器,89、162都是平台。

  第一、(我按照网上说的方法貌似有的失败。)最后我是在60这台机器上将在命令行cmd窗口切换到我jar包所在文件夹,然后执行命令:java -jar selenium-server-standalone-2.45.0.jar -role hub     (java -jar selenium-server-standalone-2.45.0.jar -port 4000 -role hub -nodeTimeout 600) 他默认起的是4444端口,这个可以自己定义的,这里是启动中心节点,我认为就是在哪台机器作为跑脚本的机器。

  第二、启动node:同样cmd切换到jar包目录。java -jar selenium-server-standalone-2.45.0.jar -10.2.4.60 -port 4002 -role webdriver -hub http://10.2.4.60:4000/grid/register -browser browserName=firefox,platform=WINDOWS  这个指定了执行的浏览器以及平台的。可以不要-browser后面的。(在启动中心节点的时候启动了selenium server的)

  第三部、在中心节点机器的浏览器中输入http://localhost:4000/grid/console 查看链接的信息,如果有node机器信息那么就正确了

  第四部、联调,看在中心节点执行脚本能否在node机器上运行,我一直在这里纠结了很久都不行,直接贴事例代码:

  

__author__ = 'pc'
from selenium.webdriver import Remote
from selenium.webdriver.common.desired_capabilities import DesiredCapabilities
list =['http://10.2.4.89:4002/wd/hub','http://10.2.4.162:4001/wd/hub']
for host in list:
    driver = Remote(command_executor=host,
                    desired_capabilities=DesiredCapabilities.FIREFOX)
    driver.get('http://www.baidu.com')
    driver.find_element_by_id('kw').send_keys('selenium python')
    driver.find_element_by_id('su').click()
    driver.quit()

我纠结了很久才调通的,还有很多需要扩展的地方,但是觉得只要调试通了一切都好说了。

  

原文地址:https://www.cnblogs.com/Mushishi_xu/p/4651956.html