Научиться использовать Assert и Asserttrue в Python для веб-драйвера селена

Я пытаюсь сделать Python WebDriver для загрузки веб-страницы, а затем подтвердить истину и запустить команду печати, если текст или объект есть, и если нет, я хочу, чтобы он просто продолжил мой цикл. Я новичок в Python и учился у Learn Python на нелегком пути и читал документацию. Я провел последний день или около того, пытаясь получить мой код для поиска текста или элементов, но он не возвращает информацию... Вот мой код до сих пор минус верхняя часть о переходе на веб-страницу, я просто материал в этом цикле подсчета отстаивать логику

count = 1000.00
while count < 1000.03:
    driver.find_element_by_id("select").clear()
    driver.find_element_by_id("select").send_keys(str(count))
    time.sleep(1)
    driver.find_element_by_id("BP").click()
    driver.find_element_by_id("BP").click()
    count += 0.01 ## increases count to test
    highervalue = driver.find_element_by_link_text("Select Error")
    assertTrue(driver.link_contains_match_for("")) ##could also be, ##text_containt_match_for("ex") or driver.assertTrue(element in WEBPAGE)??
        print 'Someone is %.7r' %count
    else:
        print 'I have %.7r' %count
    time.sleep(1)

затем цикл начинается заново. Проблема, с которой я столкнулся, заключается в том, что я хочу найти "Выбрать ошибку" на веб-странице в некой форме, ссылке или тексте, а затем, если она есть, вывести мне сообщение, а если нет, просто продолжить мой цикл.

Лучше использовать assert/asserttrue, или что-то вроде

def is_element_present(self, how, what):
    try: self.driver.find_element(by=how, value=what)
    except NoSuchElementException, e: return False
    return True

или же

Некоторые другие примеры, которые я искал об этом, могут быть использованы:

self.assertTrue(self.is_element_present(By.ID, "FOO"))

self.assertTrue(self.is_element_present(By.TEXT, "BAR"))

self.assertTrue(self.is_text_present("FOO"))

self.assertTrue(self.driver.is_text_present("FOO"))

Может ли кто-нибудь дать мне знать, как я напишу часть, когда найду что-то на веб-странице, и она даст мне обратную связь, если найдет?

2 ответа

Предполагая, что ваше сообщение "Выбрать ошибку" на самом деле является link_text, вы можете попытаться использовать оператор "try/ исключением".

try:
   WebDriverWait(driver, 3).until(
      expected_conditions.text_to_be_present_in_element((By.LINK_TEXT, "Select Error"), "Select Error")
   )
   print "Link Found..."
except NoSuchElementException:
   pass

Этот код пытается найти текст ссылки "Выбрать ошибку" в течение 3 секунд, перехватывает ошибку NoSuchElementException и затем продолжает работу с вашим кодом.

Селен содержит методы, известные как " ждет", чтобы помочь в этой конкретной ситуации. Я бы прочитал документацию о явных ожиданиях. Кроме того, есть еще один вопрос переполнения стека, который может быть полезен для рассмотрения.

Кроме того, и немного не по теме, нетипично использовать утверждения так, как вы это делаете в показанном коде. В общем, вам не следует думать об использовании подтверждений для проверки условий, а скорее об условии, которое должно быть истинным для прохождения теста, в противном случае тест останавливается и нет причин продолжать его.

Приветствия.

Другие вопросы по тегам