var _gaq = _gaq || []; _gaq.push(['_setAccount', 'UA-333696-1']); _gaq.push(['_trackPageview']); _gaq.push(['_trackPageLoadTime']); (function() { var ga = document.createElement('script'); ga.type = 'text/javascript'; ga.async = true; ga.src = ('https:' == document.location.protocol ? 'https://ssl' : 'http://www') + '.google-analytics.com/ga.js'; var s = document.getElementsByTagName('script')[0]; s.parentNode.insertBefore(ga, s); })();
  • 2011年03月29日

    Selenium 1.0到2.0

    分类:

    Selenium1.02.0整个核心都变了,Selenium 1.0从以JavaScript为核心转变为最新2.0以封装浏览器原生方法和事件为核心,后者必须为各个平台提供原生的浏览器驱动:如Firefox必须兼顾*nixwindows两种平台,幸好其引擎Gecko自身的Com就跨平台;但对于IME驱动来说就必须分平台实现了。

     

    为了能够运行JavaScriptSelenium 2.0提供了JavascriptExecutor接口,当然其实现也是浏览器原生事件。对于Internet Explorer来说其实现在selenium\cpp\InternetExplorerDriver\IEThread.cpp函数int IeThread::executeScript中,其思路主要是先调用JavaScript eval方法,如果不行再调用匿名函数Internet Explorer整体驱动构架详见InternetExplorerDriverInternals;类似还有的FirefoxDriverInternalsChromeDriverInternals

     

    为了向前兼容Selenium 1.0Selenium 2.0 java版本的WebDrive提供了一种解决方案,详见SeleniumEmulation

     

    对于Selenium 1.0 2.0的变化,官方提供了文档Selenium RC Vs. Webdriver说明了相互间的优劣。

     

    希望详细了解Selenium 2.0的,可参考WebDriver FrequentlyAskedQuestions

    分享到:

    历史上的今天:

    谈谈手机软件 2006年03月29日