Sag*_*gar 41 selenium webdriver selenium-ide selenium-webdriver
为什么我们不能在Selenium IDE中记录所有测试用例,将其导出到Java/WebDriver并使用Eclipse在WebDriver中运行它?
我需要一个明确的解释,因为我在使用WebDriver时非常困惑!
任何人都可以解释为什么IDE记录的脚本在WebDriver中失败了吗?
dda*_*son 56
为什么我们不能在IDE中记录所有测试用例,将其导出到java/webdriver并在webdriver中运行它
很好的问题,这是答案:
Selenium IDE是一个记录和回放工具,它非常易于使用,但它非常不可靠.在Web应用程序中,记录和回放通常是不受欢迎的.由于Web应用程序经常更改,因此IDE不是生产环境的理想解决方案,因为可能会出现维护噩梦.
让我举个实例.您记录测试,并找到具有动态ID的元素.当然我们可以将它导入eclipse,但是当测试开始失败时会发生什么?为什么不简单地让你的测试敏捷和独立,以便首先捕获这些.
它还归结为您的测试自动化原则.我认为测试自动化(以及其他一些专业人士)认为应该从编程角度来考虑测试自动化.程序员应该编写测试并维护测试.理想情况下,您的质量保证人员应接受培训,以编写和维护自己的测试.
再说一遍,回到您的问题,IDE旨在成为自动化的快速解决方案,而不是完整回归套件的解决方案.
任何人都可以解释为什么IDE记录的脚本在Webdriver中失败了吗?
我暂时没有使用IDE,但是它们失败的原因是因为导出的脚本只是步骤,而不是整个java文件.这也是因为在涉及如何运行测试时,Selenium IDE导出应该是不可知的.假设我是jUnit的用户..如果Selenium IDE一直将它导出到TestNG怎么办?这不公平..老实说,我宁愿创建自己的测试而不是每次创建我的测试文件时改变那一行.
您可以阅读所进行的研究的全文,称为" 为什么记录/重放Web应用程序测试中断?
Mar*_*lle 12
为什么我们不能在Selenium IDE中记录所有测试用例,将其导出到Java/WebDriver并使用Eclipse在WebDriver中运行它.
实际上,你可以很容易地使用Selenium IDE.在Selenium IDE中记录您的测试用例/测试套件,导出到"Java/JUnit 4/Webdriver"到.java文件.这将生成一个JUnit测试,您可以从Eclipse导入和运行(当然,使用正确的JUnit版本).
它不是100%可靠,您可能需要进行一些手动更改/更正,但总的来说它的效果非常好.从一个小的测试用例开始,然后在那里工作.

为什么不在IDE中录制并使用WebDriver播放录制?
假设Bob正在执行手动检查并记录他与Selenium IDE的交互.他执行的操作需要一段时间才能更新GUI,操作完成后,他会单击一个按钮.Bob知道GUI已完成更新,因为在操作完成时删除了操作开始时显示的微调器.在点击按钮之前,IDE如何捕获操作必须完成的事实?(请注意,这不是在操作完成之前禁用按钮的情况.)这不是假设:当您测试动态表(如DataTables管理的表)时,用户可以随时更改任何内容.
这可能是使用IDE创建的一系列命令因WebDriver而失败的原因之一.它只是不知道该等什么.
可以在IDE中手动添加等待,但如果您这样做,那么您不再"只记录我们所有的测试用例".你正在做的事情变得更像是为WebDriver编写代码.
不久前有一个Selenium问题,用户希望让Selenium点击具有多页记录的表中的最后一条记录.所以问题是,如何在表格中翻页,一直到最后一页,然后点击最后一条记录?有人(也许是我,也许是其他人)指出如果表是可排序的,它可以按相反的顺序排序,然后Selenium代码可以点击第一条记录.这是2个操作而不是p+1操作:点击p次数,p页面数量,加上1次点击记录.
当我们为WebDriver编写代码时,我们有机会编写测试以避免沿着风景路线获得我们想要的结果.请参阅下一点,了解其重要性的技术细节.
如果运行Selenium命令的软件是本地软件,并且您的浏览器是本地软件,那么您可能不会觉得Selenium操作成本很高,但如果您在一台计算机上运行命令而浏览器是远程的,那么您会发现显着减速.例如,如果您在Sauce Labs VM或BrowserStack VM中生成浏览器以运行测试套件,则网络延迟将增加该套件完成所需时间的大量时间.对于完整的应用程序测试套件,这可能意味着更多分钟.
IDE生成一系列命令,每个命令都需要Selenium脚本和浏览器之间的往返.每次往返都会增加.假设我想检查两个元素是否包含相同的文本.我不打算使用Selenese,因为我通常不使用IDE但在Python中使用WebDriver代码,脚本可能是:
a = driver.find_element_by_id("a")
b = driver.find_element_by_id("b")
assert_equal(a.text, b.text)
Run Code Online (Sandbox Code Playgroud)
此代码需要4次往返:每次往返一次find_element...,每次访问一次text.可以写同样的测试:
a_text, b_text = driver.execute_script("""
var a = document.getElementById("a");
var b = document.getElementById("b");
return [a.textcontent, b.textContent];
""");
assert_equal(a_text, b_text);
Run Code Online (Sandbox Code Playgroud)
这只需要一次往返.当您使用IDE记录操作时,命令序列就像早期的代码片段:许多往返行程.为WebDriver编写代码时,您可以在编码时进行优化.
这并不意味着Selenium IDE没有用,但我永远不会想到只用它录制测试然后用WebDriver播放这些录音.
| 归档时间: |
|
| 查看次数: |
49038 次 |
| 最近记录: |