六、Selenium Grid2

1、集成到Selenium Server中,需要下载和运行Selenium Server使用Grid2的功能。
 
 
访问Grid控制台: http://localhost:4444/grid/console
 
  • 通过使用RemoteWebDriver类连接到Selenium Standalone Server从而实现在远程机器上执行测试;
    • RemoteWebDriver类通过特定的端口监听Selenium根据测试脚本所下达的命令。
      • 根据RemoteWebDriver类提供的配置选项,Selenium Server可以选择启动的浏览器类型且发送命令给浏览器。
 
传统无Grid模式和有Grid模式的执行方式
 
 
 
2、工作原理
 
Grid用于分布式测试,整体结构由一个hub主节点和若干个node代理节点组成:
 
  • hub节点:用来管理各代理节点的注册和状态信息,并接收远程客户端代码的请求,然后把请求的命令转发给代理节点执行。
  • 使用Grid远程执行测试:需要同时启动一个hub和至少一个node。
  • Grid可根据用例中指定的平台配置信息把命令给符合匹配要求的测试代理。
 
3、Remote应用
 
(1)webdriver支持多浏览器是因为Webdriver针对每一种浏览器驱动都重写WebDriver方法,所以,在脚本运行之前那要先确定浏览器驱动:如driver = webdriver.Chrome()。
(2)WebDriver驱动简单分析:
 
 
  • 每个驱动目录中都有一个webdriver.py文件,其中还有remote。
    • 可以将该文件看作一种特别的驱动类型,它不是支持某一款特定的浏览器或平台,而是一种配置模式,在这种配置模式下指定任意的平台或浏览器,这种模式的执行都需要Selenium Server的支持。
    • 查看Firfox中webdriver的实现:
      • 在WebDriver类的__init__()中,因为Selenium自带Firefox浏览器驱动,所以这个驱动的重要配置在于firefor_profile和firefox_binary两个参数。这两个参数分别调用当前目录下的firefor_profile.py和firefox_binary.py文件。
  
 
  • 在脚本中调用Firefox驱动时 的路径为:selenium.webdriver.Firfox(),该路径如何指向../selenium/webdriver/firefox/webdriver.py中的WebDriver类:
    • 查看../selelnium/webdriver/下的__init__.py文件,通过对不同驱动的路径做简化且将不同目录下的WebDriver类重命名为相应的浏览器,所以,在调用不同浏览器的驱动时就简化了层级。
  
 
 
(3)Remote实例
  • Remote类以客户端的身份与Selenium Server进行交互,从而实现在远程机器上运行测试;
    • desired_capabilities,对浏览器和操作系统的配置
                    
 
 
(4)参数化平台及浏览器
 
通过Selenium Server创建本地节点和远程节点。Remote的作用是配置 测试用例在这些系节点上执行。本地多浏览器执行
 
 
 
(5)在远程节点执行
 
<1>、启动远程node
 
必须满足:
  • 本地hub与远程node主机之间可ping通;
  • 远程主机环境准备,必须安装执行的浏览器及驱动且驱动放置在环境变量path的目录下;
  • 远程主机必须安装Java环境,需运行Selenium Server。
 
<2>、操作步骤
  • 启动本地hub主机

 

 

 
  • 启动远程node主机
    • hubip:为hub主机的IP地址
 
  • 修改远程主机的 IP地址及端口号,在其上执行脚本
 
 
 
 
4、WebDriver支持的模式
 
 
  
 
  • PhantomJS:一个拥有JavascriptAPI的无界面WebKit内核。
 
 
 
 
 
 
 
 
 
 
 
 
 
posted @ 2020-05-24 13:57  晨尛  阅读(167)  评论(0编辑  收藏  举报