#python #selenium #variables #testing
#python #селен #переменные #тестирование
Вопрос:
Весь мой скрипт работает до последних 2 строк, где происходит сбой.
# Your shopping cart is empty banner
emptyBanner = driver.find_element_by_xpath("/html/body/div/div[2]/div/div[3]/div/p").text
self.assertEqual(emptyBanner, "Your shopping cart is empty.", "The basket is not empty")
при переходе по коду во время отладки я вижу, что создается переменная ’emptyBanner’ типа String и в ней сохраняется ‘Ваша корзина покупок пуста.’.
Затем в последней строке, сравнивающей переменную, а затем строку, происходит сбой.
При ошибке исключения ожидаемый результат пуст, я не понимаю, куда делась строка, хранящаяся в переменной?
Ran 1 test in 14.127s
FAILED (failures=1)
The basket is not empty
Your shopping cart is empty. !=
Expected :
Actual :Your shopping cart is empty.
Я в полной растерянности.
Вот полный код (я очень новичок в coding / selenium):
from selenium import webdriver
from selenium.webdriver import ActionChains
import unittest
class Test(unittest.TestCase):
def testShoppingCart(self):
driver = webdriver.Chrome()
driver.get("http://automationpractice.com/index.php")
driver.maximize_window()
actions = ActionChains(driver)
# locators for Women and Summer Dresses in Nav Menu
Women = driver.find_element_by_xpath("/html/body/div/div[1]/header/div[3]/div/div/div[6]/ul/li[1]/a")
summerDresses = driver.find_element_by_xpath(
"/html/body/div/div[1]/header/div[3]/div/div/div[6]/ul/li[1]/ul/li[2]/ul/li[3]/a")
# select Summer Dresses from Nav Menu
actions.move_to_element(Women).move_to_element(summerDresses).click().perform()
driver.find_element_by_xpath("/html/body/div/div[2]/div/div[3]/div[2]/ul/li[1]").click() #click dress
driver.find_element_by_id("add_to_cart").click() #add dress to cart
driver.implicitly_wait(2)
driver.find_element_by_xpath("/html/body/div/div[1]/header/div[3]/div/div/div[4]/div[1]/div[2]/div[4]/a").click() #click proceed to checkout button
#checkout
driver.find_element_by_xpath("/html/body/div/div[2]/div/div[3]/div/p").is_displayed() #check to see if dress is in checkout
trashIcon = driver.find_element_by_class_name("icon-trash")
trashIcon.is_displayed() #check to see if delete button is displayed
trashIcon.click() #click delete icon
# Your shopping cart is empty banner
emptyBanner = driver.find_element_by_xpath("/html/body/div/div[2]/div/div[3]/div/p").text
self.assertEqual(emptyBanner, "Your shopping cart is empty.", "The basket is not empty")
if __name__ == '__main__':
unittest.main()
Комментарии:
1. Распечатайте
emptyBanner
, если оно не равно «Ваша корзина пуста». или «Корзина не пуста», тест завершится неудачей. Пожалуйста, покажите намassertEqual
функцию. Я могу только догадываться о том, что происходит, пока мы не узнаем, что находится в этой функции.2. Я прошел через код до тех пор, пока я не использую локатор для хранения значения .text внутри переменной emptyBanner скриншот , как вы можете видеть, строка «Ваша корзина пуста» сохраняется в переменной в следующей строке, которую я печатаю (emptyBanner), и видно, что она напечатана вскриншот консоли, а затем, наконец, оператор assert — это то, где он прерывается. функция утверждения
3. снимок экрана показывает, какие параметры
assertEqual
принимает функция, но не то, что она делает с входными данными функции.4. Вы уверены, что нажали на нужный элемент в этом /html/body/div/ div[2]/ div / div[3]/ div[2]/ul / li[1] .