使用'检查元素是否存在;由';来自SeleniumWebDriver和Python
我试图验证页面上是否存在文本。通过ID验证元素非常简单,但尝试使用文本验证元素是不正确的。而且,我找不到用于验证网页上文本的正确属性 适用于按属性使用ID的示例使用'检查元素是否存在;由';来自SeleniumWebDriver和Python,python,webdriver,Python,Webdriver,我试图验证页面上是否存在文本。通过ID验证元素非常简单,但尝试使用文本验证元素是不正确的。而且,我找不到用于验证网页上文本的正确属性 适用于按属性使用ID的示例 self.assertTrue(self.is_element_present(By.ID, "FOO")) self.assertTrue(self.is_element_present(By.TEXT, "BAR")) 我尝试使用的示例(不起作用)用于按属性使用的文本 self.assertTrue(self.is_elemen
self.assertTrue(self.is_element_present(By.ID, "FOO"))
self.assertTrue(self.is_element_present(By.TEXT, "BAR"))
我尝试使用的示例(不起作用)用于按属性使用的文本
self.assertTrue(self.is_element_present(By.ID, "FOO"))
self.assertTrue(self.is_element_present(By.TEXT, "BAR"))
我也尝试过这些,但有*个错误(见下文)
及
*错误:AttributeError:“WebDriver”对象没有属性“is\u element\u present”
我在尝试通过.Image验证
时也遇到了同样的问题 首先,不鼓励这样做,与其在页面中查找文本,不如更改测试逻辑
下面是您如何创建自己的is\u text\u present
方法,如果您真的想使用它:
def is_text_present(self, text):
try:
body = self.driver.find_element_by_tag_name("body") # find body tag element
except NoSuchElementException, e:
return False
return text in body.text # check if the text is in body's text
对于图像,逻辑是将定位器传递到图像中。(我认为WebDriver API中不存在is\u element\u present
,但我不确定.ID的是如何工作的,让我们假设它正在工作。)
据我所见,is_元素_present是由Firefox扩展(Selenium IDE)生成的,看起来像:
def is_element_present(self, how, what):
try: self.driver.find_element(by=how, value=what)
except NoSuchElementException: return False
return True
“By”是从selenium.webdriver.common导入的:
from selenium.webdriver.common.by import By
from selenium.common.exceptions import NoSuchElementException
有几个“By”常量用于处理每个API find_元素,例如:
self.assertTrue(self.is_element_present(By.LINK_TEXT, "My link"))
验证链接是否存在,如果不存在,则避免selenium引发的异常,从而允许正确的单元测试行为。我喜欢将整个内容包装到自定义断言中
from selenium.common.exceptions import NoSuchElementException
def assertElementIsPresentByXPath(self, xpath, msg=None):
try:
self.browser.find_element_by_xpath(xpath)
self.assertTrue(True, msg)
except NoSuchElementException:
self.assertTrue(False, msg)
def test_element_10_should_exists(self):
self.browser.get('url/to/test')
self.assertElementIsPresentByXPath('//a[@id=el_10]')
这是从selenium.webdriver.common.by import by导入的,我看到标识符ID
name
xpath
dom
sizzle\u选择器链接文本标记名称默认值和键属性是的,没有任何属性。这就引出了建议的问题“如何检查文本”,您可以找到body元素,获取其文本,然后检查是否包含文本。但这是非常令人沮丧的,我建议你们改变你们的逻辑。你们的路已经死了。我的检查失败。这是一个:)
from selenium.common.exceptions import NoSuchElementException
def assertElementIsPresentByXPath(self, xpath, msg=None):
try:
self.browser.find_element_by_xpath(xpath)
self.assertTrue(True, msg)
except NoSuchElementException:
self.assertTrue(False, msg)
def test_element_10_should_exists(self):
self.browser.get('url/to/test')
self.assertElementIsPresentByXPath('//a[@id=el_10]')