Научиться использовать 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 и затем продолжает работу с вашим кодом.
Селен содержит методы, известные как " ждет", чтобы помочь в этой конкретной ситуации. Я бы прочитал документацию о явных ожиданиях. Кроме того, есть еще один вопрос переполнения стека, который может быть полезен для рассмотрения.
Кроме того, и немного не по теме, нетипично использовать утверждения так, как вы это делаете в показанном коде. В общем, вам не следует думать об использовании подтверждений для проверки условий, а скорее об условии, которое должно быть истинным для прохождения теста, в противном случае тест останавливается и нет причин продолжать его.
Приветствия.