selenium¶
selenium只有两个包webdriver和common.
usage¶
selenium.webdriver:
from selenium import webdriver
# 返回WebDriver类型的对象.
driver = webdriver.Firefox()
driver = webdriver.Chrome()
driver = webdriver.Edge()
driver = webdriver.Ie()
driver = webdriver.Opera()
driver = webdriver.Safari()
selenium.webdriver.firefox.webdriver.WebDriver:
# selenium.webdriver.[browser].webdriver.WebDriver 是 selenium.webdriver.remote.webdriver.WebDriver 的子类.
# methods:
context(*args, **kwds)
quit(self)
set_context(self, context)
# data descriptor
firefox_profile
selenium.webdriver.chrome.webdriver.WebDriver:
# methods:
create_options(self)
launch_app(self, id)
quit(self)
selenium.webdriver.firefox.webelement.FirefoxWebElement:
# selenium.webdriver.firefox.webelement.FirefoxWebElement 是 selenium.webdriver.remote.webelement.WebElement 的子类.
# methods:
find_anonymous_element_by_attribute(self, name, value)
# data descriptor:
anonymous_children
selenium.webdriver.remote.webdriver:
from selenium.webdriver.remote.webdriver import WebDriver
# methods:
add_cookie(self, cookie_dict)
back()
create_web_element(element_id)
delete_all_cookies()
delete_cookie()
execute(driver_command, params=None)
execute_async_script(script, *args)
execute_script(self, script, *args)
# execute_script('arguments[0].focus();', elem) # 获取elem的焦点
file_detector_context(*args, **kwds)
forward()
implicitly_wait(self, time_to_wait) # 隐式等待一个元素被找到.
maximize_window() # 最大化窗口
close() # 关闭一个标签
quit() # 退出整个浏览器
refresh()
save_screenshot(filename)
start_client()
start_session(capabilities, browser_profile=None)
stop_client()
switch_to_active_element()
switch_to_alert()
switch_to_default_content()
switch_to_frame(frame_reference)
switch_to_window(widow_name)
get("http://www.google.com")
get_cookie(name)
get_cookies()
get_log(log_type)
get_screenshot_as_base64()
get_screenshot_as_file(filename)
get_screenshot_as_png()
get_window_position(windowHandle='current')
get_window_rect()
get_window_size(windowHandle='current')
set_page_load_timeout(time_to_wait)
# 定位元素的16个方法
find_element_by_***()
elem = driver.find_element_by_id()
elem = driver.find_element_by_name()
elem = driver.find_element_by_class_name()
elem = driver.find_element_by_tag_name
elem = driver.find_element_by_link_text
elem = driver.find_element_by_partial_link_text
elem = driver.find_element_by_xpath()
elem = driver.find_element_by_css_selector()
find_elements_by_***()
# data descriptors:
application_cache
current_url
current_window_handle # 当前窗口的句柄
desired_capabilities
file_detector
log_types
mobile
name
orientation
page_source
switch_to
title
window_handles
selenium.webdriver.remote.webelement:
from selenium.webdriver.remote.webelement import WebElement
# methods:
elem.click() # 点击按钮.
elem.clear() # 清空文本输入框.
elem.send_keys(self, *value) # 给文本框输入内容,比如用户名密码,搜索框等.
elem.get_attribute(self, name)
elem.get_property(self, name)
elem.is_displayed(self) # 元素对用户可见
elem.is_enabled(self)
elem.is_selected(self)
elem.screenshot(self, filename)
elem.submit(self)
elem.value_of_css_property(self, property_name)
# data descriptor:
id
location
location_once_scrolled_into_view
parent
rect
screenshot_as_base64
screenshot_as_png
size
tag_name
text
selenium.webdriver.support:
# 处理select标签:
from selenium.webdriver.support.select import Select
Select(self, webelement)
deselect_all(self)
deselect_by_value(self, value)
deselect_by_visible_text(self, text)
select_by_index(self, index)
select_by_value(self, value)
select_by_visible_text(self, text)
# 处理等待页面加载:
from selenium.webdriver.support.ui import WebDriverWait
# 用于显示等待, 注意method的参数是driver.
WebDriverWait(driver, timeout, poll_frequency=0.5, ignored_exceptions=None)
WebDriverWait.until(self, method, message='') # 调用method(driver)直到返回True, 失败返回message.
WebDriverWait.until_not(self, method, message='')
selenium.webdriver.common:
from selenium.webdriver.common.keys import Keys
from selenium.webdriver.common.action_chains import ActionChains
from selenium.webdriver.common.by import By
selenium.common:
common.exception包括了所有的异常.
from selenium.common.exceptions import TimeoutException # 等待超时
from selenium.common.exceptions import NoSuchElementException
firefox headless:
from selenium.webdriver.firefox.options import Options
options = Options()
options.add_argument('--headless')
driver = Firefox(firefox_options=options)
chrome headless:
from selenium.webdriver.chrome.options import Options
options = Options()
options.add_argument('--headless')
driver = Chrome(chrome_options=options)
examples:
try:
wait = WebDriverWait(driver, 10, 1.0)
wait.until(lambda s: s.execute_script(
'return document.readyState=="complete";'),
'Fail to wait page full loaded.')
except TimeoutException as e:
raise e
finally:
driver.quit()