绕过UI

时间:2016-03-25 11:38:51

标签: selenium optimization regression-testing

有没有办法绕过那些需要在测试之前和之后(或之后)执行的操作的UI?是否可以将简单的GET或POST请求发送到同一个测试会话而不是在测试中编写脚本?

例如,我想编写一个测试,检查是否可以删除记录。要做到这一点,首先我需要创建记录。通过UI进行此操作似乎不是一个好选择,因为它不是测试本身的一部分。

2 个答案:

答案 0 :(得分:1)

这实际上取决于被测试的应用程序。您可能不希望对数据库进行SQL调用来创建这些记录,除非您真的知道自己在做什么。即使这样,当记录发生变化时,它也会使测试自动化中断。

也许您正在测试的应用程序提供了一个API,允许您创建目标记录。这将是理想的,允许您发出API请求,然后您在UI中所要做的就是导航到“用户”将删除它的位置。

答案 1 :(得分:0)

您可以通过在页面中执行一些Javascript来完成所有操作。 以下是使用Javascript调用发送HTTP请求的示例:

from selenium import webdriver

driver = webdriver.Firefox()
driver.get("https://www.google.com")

driver.execute_script("""
  var r = new XMLHttpRequest();
  r.open('POST', '/search', 0);
  r.setRequestHeader('Content-type','application/x-www-form-urlencoded');
  r.send('q=bill+material&output=xml&client=test&site=operations&access=p');
  return r.responseText;
  """)

虽然以这种方式设置测试可能很诱人,但我不推荐它,因为它会为UI创建新的依赖项,增加复杂性,从而增加测试维护的成本。