selenium

selenium只有两个包webdriver和common.

install

install from pypi:

$ pip install selenium

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()