webdriver原理
WebDriver dr = new ChromeDriver(); dr.manage().window().maximize(); dr.get("https://www.baidu.com/"); dr.findElement(By.xpath("//*[@id='su']"));
debug跟踪,同时查看反编译后的代码得知:
chromeDriver 继承 RemoteWebDriver
1 package org.openqa.selenium.chrome; 2 3 public class ChromeDriver extends RemoteWebDriver implements TakesScreenshot
RemoteWebDriver 实现 WebDriver js执行器 元素定位等
package org.openqa.selenium.remote; public class RemoteWebDriver implements WebDriver, JavascriptExecutor, FindsById, FindsByClassName, FindsByLinkText, FindsByName, FindsByCssSelector, FindsByTagName, FindsByXPath, HasInputDevices, HasCapabilities
这张图片非常好:

需要特定的webdriver,下载后放在特定目录:通过如下命令设置:
System.setProperty("webdriver.chrome.driver", "c:\\autoSVN\\driver\\chromedriver.exe");
webdriver原理: restful ,客户端---服务 模式
-
当测试脚本启动firefox的时候,selenium-webdriver 会首先在新线程中启动firefox浏览器。如果测试脚本指定了firefox的profile,那么就以该profile启动,否则的话就新启1个profile,并启动firefox;
-
firefox一般是以-no-remote的方法启动,启动后selenium-webdriver会将firefox绑定到特定的端口,绑定完成后该firefox实例便作为webdriver的remote server存在;
-
客户端(也就是测试脚本)创建1个session,在该session中通过http请求向remote server发送restful的请求,remote server解析请求,完成相应操作并返回response;
-
客户端接受response,并分析其返回值以决定是转到第3步还是结束脚本;
参考:
http://www.cnblogs.com/timsheng/archive/2012/06/12/2546957.html
http://www.tuicool.com/articles/EFNV3e
人总是在前进的。前进路上充满阳光。
浙公网安备 33010602011771号