Assert / VerifyElementPresent с Python и WebDriver? - PullRequest
20 голосов
/ 13 января 2012

Меня может смущать переход с Selenium на WebDriver и соответствующую документацию.В разделе о дизайне тестов в документации рассказывается об использовании Assert vs Verify , например AssertElementPresent.Однако при просмотре учебника по WebDriver и начале настройки тестов это, по-видимому, недоступно в Python.Я что-то пропускаю в документации, это не применимо к WebDriver, не применимо к использованию python, должен ли я использовать возможности python, а не команду assert / verify из selenium и т. Д.?

Ответы [ 5 ]

21 голосов
/ 13 января 2012

webdriver - это библиотека для управления браузерами.то, что вы хотите использовать, это методы * find_element *, чтобы найти элементы и затем установить условия для них.

например, этот код делает утверждение для содержимого элемента:

from selenium import webdriver

browser = webdriver.Firefox()
browser.get('http://www.example.com')
element = browser.find_element_by_tag_name('h1')
assert element.text == 'Example Domains'
browser.quit()
  • обратите внимание, что этот пример - чистый питон с чистым утверждением.Лучше использовать тестовый фреймворк, такой как unittest python, который имеет более мощные утверждения.
6 голосов
/ 13 января 2012

В Selenium RC существуют методы проверки / утверждения. В WebDriver они этого не делают. Также важно отметить, что делает проверка и утверждение, и их роль в ваших тестах. В Selenium RC проверка используется для проверки вашего теста, независимо от того, идет ли речь о тексте, элементах или о том, что у вас есть. Assert, с другой стороны, приведет к сбою и остановке теста. Преимущества и преимущества обсуждаются в ссылке, на которую вы ссылаетесь.

WebDriver не имеет методов проверки / утверждения. Утверждения выполняются в самом тесте. Если вы посмотрите на ответ Кори, он выполняет «утверждение» над текстом элемента. Если текст элемента не является «Примером доменов», будет вызвано AssertionError, что фактически провалит ваш тест. Но как насчет проверки? Как уже упоминалось, у WebDriver такого нет. Но вы все равно можете выполнить что-то эквивалентное, выполнив сравнение.

if element.text != u'Example Domains':
    print "Verify Failed: element text is not %r" % element.text

Так что в этом случае ваш тест не пройдёт. Но проверка все равно будет выполнена и будет напечатана на стандартный вывод.

Итак, в конце концов, дело в том, что вы хотите потерпеть неудачу. Это скорее тестовый дизайн. Надеюсь, это поможет.

5 голосов
/ 12 мая 2015

Вы должны использовать следующую функцию, чтобы проверить, что:

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

Что по умолчанию генерируется Selenium IDE при экспорте в код Python.

Тогда вы можете установить элемент следующим образом:

self.assertTrue(self.is_element_present(By.ID, "footer"))
self.assertTrue(self.is_element_present(By.CSS_SELECTOR, "header.global-header"))

Обратите внимание, что для использования By требуется следующий импорт:

from selenium.webdriver.common.by import By
1 голос
/ 21 ноября 2017

Другой способ заключается в следующем:

from selenium import webdriver
driver = webdriver.Firefox()
driver.get('http://www.testing.com')
element = driver.find_element_by_xpath('xpath of the element').text
assert element == 'Sample Text'
driver.quit()
0 голосов
/ 13 февраля 2014

Подтвердите утверждение

driver= webdriver.Firefox()

String x =driver.findElement(By.xpath("//*[@id='userNavLabel']")).getText();

System.out.println(x);

//Assert.assertEquals(actual, expected)

Assert.assertEquals("Anandan Aranganath", x);
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...