- 通过使用RemoteWebDriver类连接到Selenium Standalone Server从而实现在远程机器上执行测试;
- RemoteWebDriver类通过特定的端口监听Selenium根据测试脚本所下达的命令。
- 根据RemoteWebDriver类提供的配置选项,Selenium Server可以选择启动的浏览器类型且发送命令给浏览器。
- hub节点:用来管理各代理节点的注册和状态信息,并接收远程客户端代码的请求,然后把请求的命令转发给代理节点执行。
- 使用Grid远程执行测试:需要同时启动一个hub和至少一个node。
- Grid可根据用例中指定的平台配置信息把命令给符合匹配要求的测试代理。
- 每个驱动目录中都有一个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类重命名为相应的浏览器,所以,在调用不同浏览器的驱动时就简化了层级。
- Remote类以客户端的身份与Selenium Server进行交互,从而实现在远程机器上运行测试;
- desired_capabilities,对浏览器和操作系统的配置
- 本地hub与远程node主机之间可ping通;
- 远程主机环境准备,必须安装执行的浏览器及驱动且驱动放置在环境变量path的目录下;
- 远程主机必须安装Java环境,需运行Selenium Server。
- 启动本地hub主机
- 启动远程node主机
- hubip:为hub主机的IP地址
- 修改远程主机的 IP地址及端口号,在其上执行脚本
- HtmlUnit:开源的Java页面分析工具, http://htmlunit.sourceforge.net/,包含在Selenium Server中
- PhantomJS:一个拥有JavascriptAPI的*面WebKit内核。