Assert/VerifyElement是否与Python和WebDriver一起提供?

Assert/VerifyElement是否与Python和WebDriver一起提供?,python,unit-testing,selenium,selenium-webdriver,webdriver,Python,Unit Testing,Selenium,Selenium Webdriver,Webdriver,我可能只是被从Selenium到WebDriver的变化以及它们各自的文档弄糊涂了。在文档中关于测试设计的一节中,讨论了如何使用AssertElementPresent等。然而,在阅读WebDriver教程并开始设置测试时,Python似乎没有提供这一功能。我是否忽略了文档中的某些内容,这是否不适用于WebDriver,不适用于使用python,我是否应该使用python的功能而不是selenium的断言/验证命令等?WebDriver是一个用于驱动浏览器的库。您想要使用的是*find_elem

我可能只是被从Selenium到WebDriver的变化以及它们各自的文档弄糊涂了。在文档中关于测试设计的一节中,讨论了如何使用AssertElementPresent等。然而,在阅读WebDriver教程并开始设置测试时,Python似乎没有提供这一功能。我是否忽略了文档中的某些内容,这是否不适用于WebDriver,不适用于使用python,我是否应该使用python的功能而不是selenium的断言/验证命令等?

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这样的测试框架,它具有更强大的断言

在Selenium RC中,验证/断言方法存在。在WebDriver中,它们没有。另外,注意verify和assert的作用以及它们在测试中的作用也很重要。在Selenium RC中,verify用于在测试中执行检查,无论它是针对文本、元素还是您所拥有的内容。另一方面,Assert将导致测试失败并停止。在您引用的链接中讨论了这些好处和优势

WebDriver没有验证/断言方法。断言是在测试本身中执行的。如果你看一下Corey的答案,他会对元素的文本执行“断言”。如果元素的文本不是“示例域”,则会引发AssertionError,从而导致测试失败。但是一个验证呢?正如前面提到的,WebDriver没有。但是你仍然可以通过做一个比较来做一些等价的事情

if element.text != u'Example Domains':
    print "Verify Failed: element text is not %r" % element.text
所以在这种情况下,你的测试不会失败。但仍将进行验证,并将打印到标准输出

所以最终,问题在于你想失败什么。这更像是一个测试设计。希望这有帮助。

验证断言

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);

应使用以下功能检查:

def is_element_present(self, how, what):
    try: self.driver.find_element(by=how, value=what)
    except NoSuchElementException as e: return False
    return True
这是导出到Python代码时默认生成的

然后,您可以按如下方式断言元素:

self.assertTrue(self.is_element_present(By.ID, "footer"))
self.assertTrue(self.is_element_present(By.CSS_SELECTOR, "header.global-header"))
请注意,要使用,需要以下导入:

from selenium.webdriver.common.by import By

另一种方式是:

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()

应该是一个单独的问题,但与此相关:我如何断言某个元素不在页面上?在此处找到我的答案:我宁愿对find_element_by_tag_name调用执行一些try/exception块,因为如果找不到该元素,那么测试将标记异常错误而不是失败。。。或者有没有一种方法可以断言元素是存在的,而不会带来这种不便呢。不是Java