硒1向硒2迁移

硒2处于测试阶段已经有几个月了。我想知道我们当中是否有人已经从硒1迁移到硒2了? 在Changes方面要花多少精力来容纳2个功能。方法/ API更改# Selenium 2中的测试运行时间在性能方面有多少改进 任何共享的最佳做法/学习都将是有用的     
已邀请:
自己经历过渡。如果您有Selenium 1的经验,Selenium 2的感觉实际上会完全不同。这是我目前为止看到的Selenium 2优点/缺点与Selenium 1的对比(我使用Python,所以其中一些是特定于Python的): 优点: 快多了。 无需运行单独的服务器。 wait_for_page_to_load(),wait_for_element_present()等已一去不复返了。现在所有元素的交互,单击等都被阻止了,这很好。唯一的问题是异步加载的内容(Ajax),请参阅Con bellow。 缺点: 使用wait_for_page_to_load()加载/等待曾经“免费”的异步内容现在需要进行编码。这些是我到目前为止发现的解决方案: 使用这里解释的PageFactory / AjaxElementLocatorFactory,不幸的是我找不到与Python等效的页面。 使用webdriver.implicitly_wait(N),这似乎可以解决Python的问题,但是使用它似乎会使我的脚本丢失以前检测到的更改元素。 不要做sleep(T),循环直到元素出现,等等,这破坏了整个目的(并使wait_for_page_to_load看起来很漂亮)... 整个事情还是有点生。不同的驱动程序和绑定似乎错过了不同的功能。并不是说您不能使用它,而是准备为某些问题找到“替代解决方案”。 该文档有点可疑(与我猜测的上一点有关)。特别是对于Python。准备好阅读代码并进行大量实验(幸运的是,使用Python很容易)。您可以在网络上找到的大多数“教程”(同样,尤其是Python,Java似乎涵盖得更好)只是为了让您开始使用最简单的Web应用程序。 没有PHP绑定,不是一个很大的绑定,我更喜欢Python,但是我们最初的套件是PHP,所以我注意到了。 SeleniumIDE对Selenium 2似乎无效。 其他差异: 当您要求硒查找它们时,您正在访问的页面元素必须在页面上“可见”。例如,如果您有一个菜单(包含链接列表),当您将鼠标悬停在该菜单上时会打开,则必须确保该菜单处于打开/可见状态,然后单击其中的链接(Selenium中不是这种情况) 1)。它具有用途,因为您要测试用户在页面上看到的内容,但需要额外的代码。我发现了两种解决方案: 运行将打开菜单的Javascript,在我的情况下为
driver.execute_script(\"document.getElementById(\'dashboard_menu_navigation\').show()\")
,然后单击菜单项
driver.find_element_by_link_text(\'Orders\').click()
使用Mouse / Keyboard类来模拟实际的交互,尽管这似乎在Python绑定中是无效的(请参见上面的缺点): 示例(今天抛出throw2ѭ):
element=driver.find_element_by_id(\'mn_dashboard\')
mouse=Mouse()
mouse.move_to(element)
Cons列表似乎更长,但这主要是如果您来自Selenium1。我确实更喜欢Selenium 2的轻巧性和速度,尽管有早期代码(在编写本文时使用2.0b4),但整个功能还是非常有用的。 希望能节省一些时间...     
从Selenium 1迁移到Selenium 2就像从Selenium 1迁移一样简单
Selenium selenium = new DefaultSelenium(\"localhost\", 4444, \"*firefox\", \"http://www.example.com\");
selenium.open(\"/\");
Webdriver driver = new FirefoxDriver();
Selenium selenium = new WebDriverBackedSelenium(driver, \"http://www.example.com\");
selenium.open(\"/\");
由于Selenium 2与浏览器的绑定更加紧密,您将看到巨大的不同。我已经看到测试运行速度至少快了2倍,但在某些情况下,我却看到它运行速度快了4倍。 您在Selenium期间学到的所有相同的最佳做法都将翻译成     
可能也有帮助的幻灯片发布在这里: http://www.slideshare.net/rogerjhu1/lessons-learned-migrating-tests-to-selenium-v2     
您可以使用WebDriverBackedSelenium类将WebDriver接口转换为Selenium接口:
Selenium selenium = new WebDriverBackedSelenium(webDriver, baseUrl)
; 或者您可以使用getUnderlyingWebDriver()方法将Selenium接口转换为WebDriver接口:
WebDriver webDriver = ((WebDriverBackedSelenium)selenium).getUnderlyingWebDriver();
我在这里发布了我最近的演讲中有关如何开始使用Selenium 2的幻灯片:
http://www.slideshare.net/sebarmeli/getting-started-with-selenium-2
Selenium 2中的最佳实践之一是PageObject模式。 如果您使用的是Java和Maven,则可能需要查看以下Archetype插件(这也使您初步了解PageObject模式):
https://github.com/sebarmeli/Selenium2-Java-QuickStart-Archetype
    

要回复问题请先登录注册