selenium server在页面加载超时浏览器与driver通信失败时的妙用
事实上,WebDriver有两种方式“驱动”浏览器的方式。
1. Selenium Server:和Selenium RC一样的,通过指定远端服务器IP地址和端口号,由这个远端服务器来驱动浏览器。
2. 直接调用:无须指定任何服务器IP地址和端口号。直接使用本地的浏览器(只要安装相应的浏览器,如IE、Firefox、Chrome)
那如何决定使用哪一种方式呢?很简单的,如果你只需要在本机运行自动化的case,就没必要使用Selenium Server。
在如下的情况下,你可能需要使用Selenium Server:
1. 本地没有你想要运行的浏览器,如代码是在Linux平台运行的,而你希望测试的浏览器是Windows平台的IE
2. 使用Selenium Grid来部署多个浏览器,并发的运行case,降低case运行时间。
两者之间客户端代码在调用上的区别(以Java为例)
不使用Selenium Server:
WebDriver driver = new FirefoxDriver();
使用Selenium Server:
DesiredCapabilities capabilities = new DesiredCapabilities("firefox", "", Platform.ANY);
WebDriver driver = new RemoteWebDriver(new URL("http://127.0.0.1:4444/wd/hub/"), capabilities);
显然哈,如果使用Selenium Server的话,是需要在远程启动Selenium Server的。
还发现更重要的好处,可以实现在页面加载元素(主要是 js)时间过长时,引起浏览器与 driver之间通信com异常的问题。这时,就可以采用server这种方式了。