如何在Selenium Python中验证web元素的文本是否匹配?
我一直在做一个项目,需要在如何在Selenium Python中验证web元素的文本是否匹配?,python,selenium,pycharm,assert,Python,Selenium,Pycharm,Assert,我一直在做一个项目,需要在seleniumpython中断言web元素的文本。下面是我的意思示例: 示例 我想要断言的是图像最右侧的值6.00,以及图像左下角的值$6.00 示例.py class Example: def checkValue(self): element 1 = self.driver.find_element_by_xpath("//div[contains(text(),'6.00')]") element 2
seleniumpython
中断言web元素的文本。下面是我的意思示例:
示例
我想要断言的是图像最右侧的值6.00
,以及图像左下角的值$6.00
示例.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: $6.00')]")
class Test:
def test_1:
np = new Example()
np.checkValue()
Test.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: $6.00')]")
class Test:
def test_1:
np = new Example()
np.checkValue()
我已经包括了这两个元素的蓝图。我可以知道如何在这个
示例.py
程序中包含assert
命令吗?您应该检查这两个元素是否都具有给定的价格,或者您可以检查给定的元素是否具有预期的值
选择1
按价格查找元素并让selenium引发异常:
def检查值(自身、预期价格):
elem1_xp='//tr[@whatever]//td[contains(text(),“%s”)]'%expected_price#小计价格元素的xpath,调整它
elem2_xp='//div[contains(text(),“Total amount:$%s”)]'%expected_price#Total元素的xpath,请调整它
element_1=self.driver.find_element_by_xpath(elem1_xp)
element_2=self.driver.find_element_by_xpath(elem2_xp)
使用此解决方案,当找不到元素_1
或元素_2
时,将引发异常,您将看到找不到哪个元素。这里不需要断言。如果两个元素都找到,则检查通过
如果正在搜索6.00
,并且该元素在屏幕上出现两次,则需要小心避免两次找到同一元素(或元素及其父元素)
选择2
检查两个元素的值是否匹配。这里的第一件也是最重要的事情是为这两个元素提供精确的xpath
def检查值(自身、预期价格):
elem1_xp='//tr[@whatever]//td[4]'#价格小计元素的精确xpath
elem2_xp='//div[包含(text(),“总额:$”)'#总价元素
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(“总额:$”,“”)
断言元素_1_值==元素_2_值==预期_价格,“价格不匹配!预期价格为%s,小计为%s,总价为%s”%(预期_价格,元素_1_值,元素_2_值)
您应该检查这两个元素是否都具有给定的价格,或者您可以检查给定元素是否具有预期值
选择1
按价格查找元素并让selenium引发异常:
def检查值(自身、预期价格):
elem1_xp='//tr[@whatever]//td[contains(text(),“%s”)]'%expected_price#小计价格元素的xpath,调整它
elem2_xp='//div[contains(text(),“Total amount:$%s”)]'%expected_price#Total元素的xpath,请调整它
element_1=self.driver.find_element_by_xpath(elem1_xp)
element_2=self.driver.find_element_by_xpath(elem2_xp)
使用此解决方案,当找不到元素_1
或元素_2
时,将引发异常,您将看到找不到哪个元素。这里不需要断言。如果两个元素都找到,则检查通过
如果正在搜索6.00
,并且该元素在屏幕上出现两次,则需要小心避免两次找到同一元素(或元素及其父元素)
选择2
检查两个元素的值是否匹配。这里的第一件也是最重要的事情是为这两个元素提供精确的xpath
def检查值(自身、预期价格):
elem1_xp='//tr[@whatever]//td[4]'#价格小计元素的精确xpath
elem2_xp='//div[包含(text(),“总额:$”)'#总价元素
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(“总额:$”,“”)
断言元素_1_值==元素_2_值==预期_价格,“价格不匹配!预期价格为%s,小计为%s,总价为%s”%(预期_价格,元素_1_值,元素_2_值)
为什么我没有想到这一点?那很有用。我将尝试一下,并尽快让您知道第一个问题,我发现Python 2.7不支持“f”前缀。我该如何解决这个问题。我使用的是PyCharm 2020.3'f-strings'是python3.6+。好的。将更改为3.7,那么如果我从测试类实例化它呢?预期价格
必须用正确的东西初始化?为什么我没有想到呢?那很有用。我将尝试一下,并尽快让您知道第一个问题,我发现Python 2.7不支持“f”前缀。我该如何解决这个问题。我使用的是PyCharm 2020.3'f-strings'是python3.6+。好的。将更改为3.7,那么如果我从测试类实例化它呢?预期价格
必须用一些东西初始化,对吗?