如何验证网页元素的文本是否匹配Selenium Python?
How to validate whether the text of web elements matches in Selenium Python?
我一直在做一个项目,我需要在 Selenium Python
中 assert
网络元素的文本。下面是我的意思的例子:
例子
我要assert
的是图片最右边的值6.00
和图片左下角的.00
Example.py
class Example:
def checkValue(self):
element 1 = self.driver.find_element_by_xpath("//div[contains(text(),'6.00')]")
element 2 = self.driver.find_element_by_xpath("//label[contains(text(),'Total Amount: .00')]")
Test.py
class Test:
def test_1:
np = new Example()
np.checkValue()
我已经包含了 2 个元素的蓝图。我可以知道如何在这个 example.py
程序中包含 assert
命令吗?
您应该检查是否可以找到具有给定价格的两个元素,或者您可以检查给定元素是否具有预期值。
选项 1
按价格查找元素并让 selenium 引发异常:
def check_value(self, expected_price):
elem1_xp = '//tr[@whatever]//td[contains(text(),"%s")]' % expected_price # xpath of the subtotal price element, adjust it
elem2_xp = '//div[contains(text(), "Total amount: $%s")]' % expected_price # xpath of the total element, adjust it
element_1 = self.driver.find_element_by_xpath(elem1_xp)
element_2 = self.driver.find_element_by_xpath(elem2_xp)
使用此解决方案,当找不到 element_1
或 element_2
时,将引发异常,您将看到找不到哪个元素。你不需要在这里断言。如果两个元素都找到,则检查通过。
如果您正在搜索 6.00
并且它在屏幕上出现了两次,您需要小心避免找到相同的元素两次(或该元素及其父元素)。
选项2
检查两个元素的值是否匹配。这里的第一件也是最重要的事情是为两个元素提供精确的 xpath
。
def check_value(self, expected_price):
elem1_xp = '//tr[@whatever]//td[4]' # precise xpath of the subtotal price element
elem2_xp = '//div[contains(text(), "Total amount: $")]' # total price element
element_1_value = self.driver.find_element_by_xpath(elem1_xp).text
element_2_value = self.driver.find_element_by_xpath(elem2_xp).text.replace("Total amount: $", "")
assert element_1_value == element_2_value == expected_price, "Price mismatch! Expected price is %s, subtotal is %s, total price is %s" % (expected_price, element_1_value, element_2_value)
我一直在做一个项目,我需要在 Selenium Python
中 assert
网络元素的文本。下面是我的意思的例子:
例子
我要assert
的是图片最右边的值6.00
和图片左下角的.00
Example.py
class Example:
def checkValue(self):
element 1 = self.driver.find_element_by_xpath("//div[contains(text(),'6.00')]")
element 2 = self.driver.find_element_by_xpath("//label[contains(text(),'Total Amount: .00')]")
Test.py
class Test:
def test_1:
np = new Example()
np.checkValue()
我已经包含了 2 个元素的蓝图。我可以知道如何在这个 example.py
程序中包含 assert
命令吗?
您应该检查是否可以找到具有给定价格的两个元素,或者您可以检查给定元素是否具有预期值。
选项 1
按价格查找元素并让 selenium 引发异常:
def check_value(self, expected_price):
elem1_xp = '//tr[@whatever]//td[contains(text(),"%s")]' % expected_price # xpath of the subtotal price element, adjust it
elem2_xp = '//div[contains(text(), "Total amount: $%s")]' % expected_price # xpath of the total element, adjust it
element_1 = self.driver.find_element_by_xpath(elem1_xp)
element_2 = self.driver.find_element_by_xpath(elem2_xp)
使用此解决方案,当找不到 element_1
或 element_2
时,将引发异常,您将看到找不到哪个元素。你不需要在这里断言。如果两个元素都找到,则检查通过。
如果您正在搜索 6.00
并且它在屏幕上出现了两次,您需要小心避免找到相同的元素两次(或该元素及其父元素)。
选项2
检查两个元素的值是否匹配。这里的第一件也是最重要的事情是为两个元素提供精确的 xpath
。
def check_value(self, expected_price):
elem1_xp = '//tr[@whatever]//td[4]' # precise xpath of the subtotal price element
elem2_xp = '//div[contains(text(), "Total amount: $")]' # total price element
element_1_value = self.driver.find_element_by_xpath(elem1_xp).text
element_2_value = self.driver.find_element_by_xpath(elem2_xp).text.replace("Total amount: $", "")
assert element_1_value == element_2_value == expected_price, "Price mismatch! Expected price is %s, subtotal is %s, total price is %s" % (expected_price, element_1_value, element_2_value)