Ошибка захвата диапазона для текстового поля с селеном python - PullRequest
0 голосов
/ 02 мая 2020

С помощью приведенного ниже сценария я пытаюсь получить текст ошибки из текстового поля ошибки span для имени, когда имя не введено, и пользователь нажимает кнопку отправки на экране регистрации с HTML ниже. (https://www.walmart.com/account/signup. Однако я получаю только текст вместо текста. Когда я пытаюсь получить текст из консоли chrome, я получаю текст с селектором xpath и css как "$ x ("// span [@ class = 'span-error']") [2] "и" $$ (". span-error") [2] ". Я хотел бы получить некоторые рекомендации относительно того, что мне не хватает Я думаю, что перепробовал все, что мог придумать.

Контрольный пример:

  • Получить по ссылке Ничего не вводить в имени, Получить ошибку проверки Утвердить ошибку проверки Введите неверное имя как ":::" Получите ошибку проверки (у них, кажется, есть пара) и т. д.

enter image description here

from time import sleep
from conftest import os
from selenium.common.exceptions import NoSuchElementException
from selenium.webdriver.common.by import By
from selenium.webdriver.support import expected_conditions as EC
from selenium.webdriver.support.wait import WebDriverWait
from selenium.webdriver.common.keys import Keys
from selenium.webdriver.common.action_chains import ActionChains


# LoginScreenSelectors
sel_first_name = "#first-name-su"
sel_last_name = "#last-name-su"
sel_email = "#email-su"
sel_password = "#password-su"
sel_error_message = ".span-error:nth-of-type(2)"
sel_submit = f"""[data-automation-id="signup-submit-btn"]"""
sel_required_error = f"""[data-error="required"]"""


class Login():
    '''This will signup to the applcaiton '''

    def __init__(self, driver):
        self.driver = driver
        wait = WebDriverWait(self.driver, 20)
        self.first_name = wait.until(
            EC.presence_of_element_located((By.CSS_SELECTOR, sel_first_name))
        )
        self.last_name = wait.until(
            EC.visibility_of_element_located((By.CSS_SELECTOR, sel_last_name))
        )
        self.email = wait.until(
            EC.visibility_of_element_located((By.CSS_SELECTOR, sel_email))
        )
        self.password = wait.until(
            EC.visibility_of_element_located((By.CSS_SELECTOR, sel_password))
        )
        self.submit = wait.until(
            EC.visibility_of_element_located((By.CSS_SELECTOR, sel_submit))
        )

    def login_to_website(self):
        wait = WebDriverWait(self.driver, 10)
        print(self.driver.title)
        self.first_name.click()
        self.first_name.send_keys("  ")
        self.first_name.send_keys(Keys.TAB)

        self.first_name_error_message = wait.until(
             EC.presence_of_all_elements_located((By.CSS_SELECTOR, sel_error_message))
         )
        type(self.first_name_error_message)
        error_messages = []
        for messages in self.first_name_error_message:
            print(error_messages.append(messages.text))

        #if i could get this then i could simply get the first index and then keep filtering
         it but even that is proving to be difficult.
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...