如何解决 Selenium Python 中的 AssertionError?
How to resolve AssertionError in Selenium Python?
我目前正在 Python 中使用 Selenium 开发一个项目,当我在括号中放置一个特定的参数化值 6.00
时,我得到 AssertionError
。
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)
错误 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, "Price mismatch! Expected price is %s, subtotal is %s, total price is %s" % (round(expected_price,2), subTotalAmt, totalCalAmt)
AssertionError: Price mismatch! Expected price is 6.0, subtotal is 6.00, total price is Total Amount: .00
错误 StackTrace(如果我将 "6.00"
作为参数值)
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, "Price mismatch! Expected price is %s, subtotal is %s, total price is %s" % (expected_price, subTotalAmt, totalCalAmt)
AssertionError: Price mismatch! Expected price is 6.00, subtotal is 6.00, total price is Total Amount: .00
有人可以解决这个问题吗?我似乎无法诊断这个问题
text
属性 returns 字符串,即使文本看起来像数字。 "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
我刚刚意识到文本有一个特殊字符,所以我无法转换为 float
ValueError: could not convert string to float: Total Amount: .00
所以totalcalamt
的值为
Total Amount: .00
所以我应该使用
float(subTotalAmt.split('$')[1])
这只得到string
的数字部分。
我目前正在 Python 中使用 Selenium 开发一个项目,当我在括号中放置一个特定的参数化值 6.00
时,我得到 AssertionError
。
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)
错误 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, "Price mismatch! Expected price is %s, subtotal is %s, total price is %s" % (round(expected_price,2), subTotalAmt, totalCalAmt)
AssertionError: Price mismatch! Expected price is 6.0, subtotal is 6.00, total price is Total Amount: .00
错误 StackTrace(如果我将 "6.00"
作为参数值)
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, "Price mismatch! Expected price is %s, subtotal is %s, total price is %s" % (expected_price, subTotalAmt, totalCalAmt)
AssertionError: Price mismatch! Expected price is 6.00, subtotal is 6.00, total price is Total Amount: .00
有人可以解决这个问题吗?我似乎无法诊断这个问题
text
属性 returns 字符串,即使文本看起来像数字。 "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
我刚刚意识到文本有一个特殊字符,所以我无法转换为 float
ValueError: could not convert string to float: Total Amount: .00
所以totalcalamt
的值为
Total Amount: .00
所以我应该使用
float(subTotalAmt.split('$')[1])
这只得到string
的数字部分。