硒1到硒2迁移

Siv*_*iva 12 testing selenium automation webdriver selenium-webdriver

硒2在过去几个月一直处于β期.如果我们的任何人已经从硒1分析/迁移到硒2,我想知道学习

  1. 为了适应2个功能,在变更#方面所付出的努力是多少.方法/ API更改#
  2. 在Selenium 2中,测试运行时间的性能提升了多少
  3. 任何最佳实践/学习共享都会很有用

pep*_*_bg 21

我自己经历过渡.如果你有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做的技巧,但使用它似乎导致我的脚本错过了以前用于检测的更改元素.
    • 不要做睡眠(T),循环直到元素出现等,这会破坏整个事物的目的(并使wait_for_page_to_load看起来很漂亮)......
  • 整个事情仍然感觉有点生气.不同的驱动程序和绑定似乎错过了不同的功能.不是说你不能使用它,而是准备为某些问题找到"替代解决方案".
  • 文档有点可疑(与我猜的上一点相关).特别是对于Python.准备好阅读代码并进行大量实验(幸运的是,使用Python很容易).您可以在网上找到的大多数"教程"(再次,尤其是Python,Java似乎更好地覆盖)只是为了让您开始使用最简单的Web应用程序.
  • 没有PHP绑定,不是一个大的我喜欢Python,但我们的原始套件是PHP所以我注意到了.
  • 硒对硒2似乎毫无用处.

其他差异:

  • 当您要求selenium查找它们时,您访问的页面元素必须在页面上"可见".例如,如果您有一个菜单(包含链接列表),当您将鼠标悬停在其上时会打开,您必须确保它在您点击内部链接之前打开/可见(在Selenium 1中不是这种情况) ).这是它的用途,因为您将测试用户在页面上看到的内容,但需要额外的代码.我找到了两个解决方案
    • 运行一个Javascript打开你的菜单,在我的情况下,driver.execute_script("document.getElementById('dashboard_menu_navigation').show()")然后单击菜单项driver.find_element_by_link_text('Orders').click()
    • 使用鼠标/键盘类来模拟实际的交互,但这似乎在Python绑定中被破坏了(参见上面的缺点):

示例('WebElement' object has no attribute 'mouse_move_to'今天抛出):

element=driver.find_element_by_id('mn_dashboard')
mouse=Mouse()
mouse.move_to(element)
Run Code Online (Sandbox Code Playgroud)

Cons列表似乎更长,但这主要是因为你来自Selenium 1.我更喜欢Selenium 2的轻盈和速度,尽管早期代码(在编写时使用2.0b4),整个事情是非常有用的.

希望能节省一些时间......


Aut*_*ter 10

从Selenium 1迁移到Selenium 2就像从中移动一样简单

Selenium selenium = new DefaultSelenium("localhost", 4444, "*firefox", "http://www.example.com");
selenium.open("/");
Run Code Online (Sandbox Code Playgroud)

Webdriver driver = new FirefoxDriver();
Selenium selenium = new WebDriverBackedSelenium(driver, "http://www.example.com");
selenium.open("/");
Run Code Online (Sandbox Code Playgroud)

由于Selenium 2与浏览器绑定得更紧密,因此您将看到巨大的差异.我看到测试运行速度至少快2倍,但在某些情况下,我看到测试运行速度提高了4倍.

您在Selenium期间学到的所有最佳实践都将被翻译过来