作为硒测试开发人员,我总是习惯用的webdriver知识仅限于在开发测试脚本工具的使用.但我好奇地想知道如何使用的webdriver页面上的浏览器进行交互的内部.
我的问题是:
我已阅读,直接的webdriver与浏览器,而不是像硒RC执行JavaScript的自动化引擎交互.这是否意味着WebDriver不会在所有情况下执行Javascript?
这是否意味着有与DOM交互的方式不止一种?我认为JavaScript是访问/分析DOM上的浏览器的唯一途径.
Selenium RC使用代理来消除同源策略的问题.webdriver的是如何解决同源策略的问题?
WebDriver使用JSON有线协议.但在的webdriver的部件,在使用JSON Wire协议?它是在不同的浏览器的驱动程序使用的?或者是它的语言绑定API中使用?
当我的代码是:
如何与DOM的webdriver在执行上面的代码时访问?
WebDriver driver = new ChromeDriver();
driver.get("http://www.google.com");
WebElement searchField = driver.findElement(By.name("q"));
searchField.sendKeys("selenium");
这将真正帮助,如果有人能详细解释这些给我.我想做出关于webdriver的内部工作,希望能够帮助任何人搜索该主题的社区维基.提前致谢!
与浏览器通信的WebDriver的所有实现或RemoteWebDriver服务器都使用通用的有线协议.此线协议定义使用JSON通过HTTP RESTful Web服务.
因此,每个命令的webdriver被映射到经由服务的webdriver的HTTP方法,然后传递给HTTP命令处理器与浏览器进行通信.命令的响应被返回为经由服务的webdriver HTTP/1.1的响应消息.
不同的驱动程序,例如Firefox驱动程序和IE驱动程序,具有不同的实现来完成上述操作.
下面链接的硒webdriver的架构文件进入更详细的信息WebDrvier命令这些如何实现以及如何流过的浏览器和背部.有关Firefox驱动程序的详细信息,请阅读第16.6节.
开源应用程序的架构-硒的webdriver
由西蒙·斯图尔特(webdriver的创建者和核心贡献者硒项目)
此外,在细节的webdriver的单线协议会理解HTTP方法是如何映射帮助.