Как определить текст, который появляется в Selenium только изредка - PullRequest
1 голос
/ 19 июня 2019

Как мне найти текст, который иногда появляется на странице?Типичный пример - неправильный пароль.Затем появится сообщение о том, что пароль был введен неправильно, и мне нужно сделать подтверждение для этого сообщения.Сообщение появляется в этом блоке <td colspan = "2" style = "color: Red;" align = "center"> Wrong name or password.</td>. К сожалению, код, который я ввожу с помощью xpath, не найдет мой текст.

см .:

wait = WebDriverWait (driver 10)
text_tag = wait.until (EC.presence_of_element_located ((By.XPATH, "/html/body/form/div[3]/div[2]/div[2]/table/tbody/tr[1]/td[1]/div/div/div/div/div/div/div/table/tbody/tr[1]/td/table/tbody/tr[1]/td[2]/b")))

if text_tag:
    assert text_tag.text == "Incorrect name or password."
    print (text_tag.text)
    print ("Found - OK")
else:
    exit()

Ответы [ 3 ]

2 голосов
/ 19 июня 2019

Хорошо, спасибо за помощь.Это последний скрипт, который является функцией.Нужно было поменять XPATH на CSS селектор:

error_message = driver.find_element_by_css_selector('td[style = "color: Red;"]')

if error_message:
    assert error_message.text == "Incorrect name or password."
    print (error_message.text)
    print ("Found - OK")
else:
    exit()
    print("Not FOUND")

driver.implicitly_wait(0)
1 голос
/ 19 июня 2019

Вы можете установить временное неявное ожидание вместо WebDriverWait и проверить, существует ли элемент, используя find_elements.Это будет искать элемент до 10 секунд, и если элемент существует, возвращенный список не будет пустым.

driver.implicitly_wait(10)

error_message = driver.find_elements_by_xpath('//*[contains(., "Incorrect name or password")]')
if error_message:
    assert error_message[0].text == "Incorrect name or password."
    print (text_tag.text)
    print ("Found - OK")

driver.implicitly_wait(0)

В качестве примечания, не используйте абсолютные xpath /html/body/...Хрупкий локатор.

0 голосов
/ 19 июня 2019

Попробуйте этот код:

try:
    wait = WebDriverWait(driver, 15)
    text_tag =wait.until(EC.visibility_of_element_located("Xpath"))
    if text_tag:
        assert text_tag.text == "Incorrect name or password."
        print (text_tag.text)
        print("Found - OK")
    else:
        exit()
except:
    exit()
    print("Not FOUND")
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...