我可能会因Selenium到WebDriver及其各自文档的更改而感到困惑。在文档中有关测试设计的章节中,有谈论使用Assert vs Verify,如AssertElementPresent。然而,在阅读WebDriver教程并开始设置测试时,这似乎并不适用于Python。我忽略文档中的东西,这是不适用于WebDriver,不适用于使用python,我应该使用python的功能,而不是从selenium等assert /验证命令?使用Python和WebDriver断言/ VerifyElementPresent?
17
A
回答
16
webdriver是一个驱动浏览器的库。你想要使用的是* find_element *方法来定位元素,然后针对它们声明条件。
例如,这个代码在元件的内容的断言:
from selenium import webdriver
browser = webdriver.Firefox()
browser.get('http://www.example.com')
element = browser.find_element_by_tag_name('h1')
assert element.text == 'Example Domains'
browser.quit()
- 注意这个例子中是纯Python与裸断言。最好使用像python的unittest这样的测试框架,它具有更强大的断言。
6
在Selenium RC中,存在验证/断言方法。在WebDriver中,他们没有。此外,重要的是要注意验证和断言的作用以及它们在测试中的作用。在Selenium RC中,验证用于在您的测试中执行检查,无论是在文本,元素还是您身上。另一方面,断言会导致测试失败并停止。在您引用的链接中讨论了好处和优点。
WebDriver没有每个说的验证/断言方法。断言在测试本身中执行。如果你看看Corey的回答,他会对元素的文本执行“断言”。如果元素的文本不是“示例域”,则会引发AssertionError,从而使测试失败。但是验证呢?如上所述,WebDriver没有一个。但是通过比较,你仍然可以执行相同的操作。
if element.text != u'Example Domains':
print "Verify Failed: element text is not %r" % element.text
因此,在这种情况下,您的测试不会失败。但验证仍然会发生,并将打印到标准输出。
所以最终,这是你想要失败的问题。它更像是一种测试设计。希望这可以帮助。
-1
验证断言
driver= webdriver.Firefox()
String x =driver.findElement(By.xpath("//*[@id='userNavLabel']")).getText();
System.out.println(x);
//Assert.assertEquals(actual, expected)
Assert.assertEquals("Anandan Aranganath", x);
+1
硒蟒问题。不是Java – bron 2014-03-05 09:42:49
4
你应该使用下面的函数来检查:
由 Selenium IDE导出到Python代码时产生哪些默认def is_element_present(self, how, what):
try: self.driver.find_element(by=how, value=what)
except NoSuchElementException as e: return False
return True
。
然后你就可以断言如下元素:
self.assertTrue(self.is_element_present(By.ID, "footer"))
self.assertTrue(self.is_element_present(By.CSS_SELECTOR, "header.global-header"))
注意下面的进口是需要使用By
:
from selenium.webdriver.common.by import By
0
另一种方式如下:
from selenium import webdriver
driver = webdriver.Firefox()
driver.get('http://www.testing.com')
element = driver.find_element_by_xpath('xpath of the element').text
assert element == 'Sample Text'
driver.quit()
相关问题
- 1. Webdriver的硬和软断言
- 2. Java,WebDriver,断言/异常和UI状态
- 3. 在方法中使用断言 - Python
- 4. 断言一个WebElement不存在使用硒的webdriver与Java
- 5. 如何使用selenium webdriver中的断言列表
- 6. C# - ;使用断言
- 7. Rspec和watir-webdriver;基于断言运行/跳过测试?
- 8. 断言和例外的适当使用
- 9. 使用Selenium Webdriver和Python检测音频
- 10. 从rspec中断言断言与断言
- 11. Python:断言错误,“未调用”
- 12. 使用断言在Java中
- 13. 你使用断言吗?
- 14. 调试断言使用CMFCPropertyGridFileProperty
- 15. 使用iframe的Python Selenium webdriver
- 16. 断言与JUnit断言
- 17. 断言调用方法使用模拟python
- 18. 如何在gotoif中使用断言/验证
- 19. 使用Python语言
- 20. 使用断言提高了python中的单元测试
- 21. Selenium :: Webdriver :: Ruby中的元素对象的断言
- 22. 静态断言和SFINAE
- 23. ScalaTest断言和匹配器
- 24. Eclipse:启用断言
- 25. Ruby断言和禁用的输入
- 26. 测试用例和断言语句
- 27. 在内核调用中使用断言
- 28. Python Selenium使用PhantomJS webdriver禁用CSS
- 29. OpenCV的Python的断言播放.AVI时
- 30. 如何编写自定义断言Python
应该是一个单独的问题,但在这里是相关的: 我将如何断言n元素不存在于页面上? – Priednis 2013-01-25 12:15:39
在这里找到我的答案:http://sqa.stackexchange.com/questions/3481/quicker-way-to-assert-that-an-element-does-not-exist?rq=1 – Priednis 2013-01-25 12:29:03
我宁愿做一些尝试/除了NoSuchElementException阻止find_element_by_tag_name调用,因为如果找不到元素,那么测试将标记一个异常ERROR而不是一个FAILure ...或者有没有一种方法来断言该元素存在没有这种不便? – 2014-06-05 17:48:51