Распространенные методы
Last updated
Was this helpful?
Last updated
Was this helpful?
Was this helpful?
Чтобы щелкнуть элемент на странице:
ProTip™: В большинстве веб-браузеров вы можете щелкнуть правой кнопкой мыши страницу и выбрать Inspect Element
, чтобы просмотреть сведения о селекторе CSS, которые вам понадобятся для создания собственных сценариев.
self.type(selector, text)
# обновляет текст из указанного элемента с указанным значением. Исключение возникает, если элемент отсутствует или если текстовое поле недоступно для редактирования. Пример:
Вы также можете использовать self.add_text()
или команду WebDriver .send_keys()
, но они не будут сначала очищать текстовое поле, если внутри уже есть текст. Если вы хотите ввести специальные клавиши, это тоже легко. Вот пример:
(ПРИМЕЧАНИЕ. Вы также можете использовать: self.assert_element_present(ELEMENT)
)
(ПРИМЕЧАНИЕ: краткие версии этого self.find_element(ELEMENT)
и self.assert_element(ELEMENT)
. Версия find_element() возвращает элемент)
Поскольку строка выше возвращает элемент, вы можете комбинировать его с .click(), как показано ниже:
ProTip™: Вы можете использовать точки для обозначения имен классов (пример: div.class_name
) в качестве упрощенной версии div[class="class_name"]
в селекторе CSS.
Вы также можете использовать *=
для поиска любого частичного значения в селекторе CSS, как показано ниже:
(ПРИМЕЧАНИЕ: self.find_text(TEXT, ELEMENT)
а self.wait_for_text(TEXT, ELEMENT)
также сделайте это. Для обратной совместимости старые имена методов были сохранены, но время ожидания по умолчанию может быть другим.)
is_element_visible(selector) # элемент виден на странице
is_element_present(selector) # элемент присутствует на странице
Другой пример:
Полный список методов SeleniumBase см. в разделе Обзор методов .
self.open("https://xkcd.com/378/") # This method opens the specified page.
self.go_back() # This method navigates the browser to the previous page.
self.go_forward() # This method navigates the browser forward in history.
self.refresh_page() # This method reloads the current page.
self.get_current_url() # This method returns the current page URL.
self.get_page_source() # This method returns the current page source.
self.click("div#my_id")
self.type("input#id_value", "2012")
from selenium.webdriver.common.keys import Keys
self.find_element("textarea").send_keys(Keys.SPACE + Keys.BACK_SPACE + '\n') # The backspace should cancel out the space, leaving you with the newline
text = self.get_text("header h2")
attribute = self.get_attribute("#comic img", "title")
self.wait_for_element_present("div.my_class", timeout=10)
self.wait_for_element_visible("a.my_class", timeout=5)
self.find_element("a.my_class", timeout=5).click()
# But you're better off using the following statement, which does the same thing
self.click("a.my_class") # DO IT THIS WAY!
self.click('a[name*="partial_name"]')
self.assert_text("Make it so!", "div#trek div.picard div.quotes")
self.assert_text("Tea. Earl Grey. Hot.", "div#trek div.picard div.quotes", timeout=3)
self.assert_true(myvar1 == something)
self.assert_equal(var1, var2)
if self.is_element_visible('div#warning'):
print("Red Alert: Something bad might be happening!")
if self.is_element_present('div#top_secret img.tracking_cookie'):
self.contact_cookie_monster() # Not a real SeleniumBase method
else:
current_url = self.get_current_url()
self.contact_the_nsa(url=current_url, message="Dark Zone Found") # Not a real SeleniumBase method
def is_there_a_cloaked_klingon_ship_on_this_page():
if self.is_element_present("div.ships div.klingon"):
return not self.is_element_visible("div.ships div.klingon")
return False
source = self.get_page_source()
head_open_tag = source.find('<head>')
head_close_tag = source.find('</head>', head_open_tag)
everything_inside_head = source[head_open_tag+len('<head>'):head_close_tag]