如何解决如何解决 Selenium Python 中的 AssertionError?
我目前正在用 Python 在 Selenium 中开发一个项目,当我将特定的参数化值 AssertionError
放在括号中时,我得到了 6.00
。
Test.py
Class Test:
def test_voidnewcard(self):
np.createReqNewCard(expected_price= 6.00)
NewCard.py
Class NewCard:
def createReqNewCard(self,expected_price):
self.driver.find_element_by_xpath(self.jobOrder_xpath).send_keys(self.jobReqNewCard)
self.driver.find_element_by_xpath(self.excelButton_xpath).send_keys(self.excpath)
self.driver.find_element_by_xpath(self.topup_textbox_xpath).send_keys("1")
self.driver.find_element_by_xpath(self.calculateAmount_xpath).click()
subTotalAmt = self.driver.find_element_by_xpath("//body[1]/div[1]/div[3]/div[1]/div[1]/table[1]/tbody[1]/tr[1]/td[4]/div[1]").text
totalCalAmt = self.driver.find_element_by_xpath("//body[1]/div[1]/div[3]/div[1]/div[1]/div[4]/div[2]/label[1]").text.replace("Total amount: $","")
assert subTotalAmt == totalCalAmt == expected_price,"Price mismatch! Expected price is %s,subtotal is %s,total price is %s" % (round(expected_price,2),subTotalAmt,totalCalAmt)
self.driver.find_element_by_xpath(self.buttonSubmit_xpath).click()
time.sleep(8)
Error StackTrace(如果我把6.00
作为参数值
Failure
Traceback (most recent call last):
File "C:\Python27\lib\unittest\case.py",line 329,in run
testMethod()
File "C:\Users\lukegoh\Desktop\Python Projects\SoftwareAutomationTesting\testCases\AutoTest.py",line 77,in test_voidnewcard
np.createReqNewCard(expected_price= 6.00)
File "C:\Users\lukegoh\Desktop\Python Projects\SoftwareAutomationTesting\newCard\NewCard.py",line 29,in createReqNewCard
assert subTotalAmt == totalCalAmt == expected_price,totalCalAmt)
AssertionError: Price mismatch! Expected price is 6.0,subtotal is 6.00,total price is Total Amount: $6.00
Error StackTrace(如果我把 "6.00"
作为参数化值)
Traceback (most recent call last):
File "C:\Python27\lib\unittest\case.py",in test_voidnewcard
np.createReqNewCard(expected_price='6.00')
File "C:\Users\lukegoh\Desktop\Python Projects\SoftwareAutomationTesting\newCard\NewCard.py",total price is %s" % (expected_price,totalCalAmt)
AssertionError: Price mismatch! Expected price is 6.00,total price is Total Amount: $6.00
有人能解决这个问题吗?我似乎无法诊断这个问题
解决方法
我刚刚意识到文本有一个特殊字符,所以我无法转换为 float
ValueError: could not convert string to float: Total Amount: $6.00
所以 totalcalamt
的值是
Total Amount: $6.00
因此我应该使用
float(subTotalAmt.split('$')[1])
这只会得到 string
的数字部分。
text
属性也会返回字符串。 "6.00"
不等于 6.00
。试试
subTotalAmt = self.driver.find_element_by_xpath("//body[1]/div[1]/div[3]/div[1]/div[1]/table[1]/tbody[1]/tr[1]/td[4]/div[1]").text
totalCalAmt = [float(i) for i in self.driver.find_element_by_xpath("//body[1]/div[1]/div[3]/div[1]/div[1]/div[4]/div[2]/label[1]").text.split() if i.isdigit()][0]
assert float(subTotalAmt) == totalCalAmt == expected_price
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。