Сбой простого теста selenium при использовании функции assertEqual

#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] .