一、常用库导入
1.from selenium import webdriver 导入webdriver模块
2.from selenium.webdriver import ActionChains 导入动作链类,动作链可以储存鼠标的动作,并一起执行
3.from selenium.webdriver.common.key import Key 键盘操作使用的是Keys类,一般配合send_keys使用
4.from selenium.webdriver.support.select import Select 下拉框的操作都交由Select类进行处理
5.from selenium.webdriver.common.by import By
from selenium.webdriver.support.ui import WebDriverWait
from selenium.webdriver.support import expected_conditions as EC 显示等待使用的类
二、浏览器操作
创建浏览器对象 driver = webdriver.xxx()
浏览器窗口最大化 driver.maximize_window()
获取浏览器尺寸 driver.get_window_size()
设置浏览器宽和高 driver.set_window_size(400,800)
获取浏览器位置 get_window_position()
设置浏览器位置 set_window_position(x,y)
关闭当前标签/窗口 close()
关闭所有标签/窗口 quit()
三、页面相关操作
请求某个url driver.get(url)
刷新页面操作 driver.refresh()
回退到之前的页面 driver.back()
前进到之后的页面 driver.forward()
获取当前访问页面url driver.current_url
获取当前的页面标题 driver.title
四、页面元素定位
例如给定一个元素如下:
<input type="text" name="passwd" id="passwd-id" />
方法:
element = driver.find_element_by_id("passwd-id")
element = driver.find_element_by_name("passwd")
# 如果有多个与查询匹配的元素,则仅返回第一个。如果什么也找不到,将引发NoSuchElementException
element = driver.find_element_by_xpath("//input[@id='passwd-id']")
注:
find_element_by_id(value)----通过id 唯一
find_element_by_name(value)----name属性值定位 唯一
find_element_by_linx_text(value)----文字超链接,文字定位
find_element_by_partial_link_text(value)----文字超链接,部分文字定位
find_element_by_class_name(value)---类名定位
find_element_by_tag_name(value)----标签名定位
find_element_by_xpath(value)---xpath路径表达式
find_element_by_css_selector(value)---css选择器
------elements 将返回一个列表
除了上述的公共方法,还有两种私有方法可能对查找页面元素有用:find_element find_elements
from selenium.webdriver.common.by import By
driver.find_element(By.XPATH, '//button[text()="Some text"]')
driver.find_elements(By.XPATH, '//button')
这些是按类可用的属性:
ID = "id"
XPATH = "xpath"
LINK_TEXT = "link text"
PARTIAL_LINK_TEXT = "partial link text"
NAME = "name"
TAG_NAME = "tag name"
CLASS_NAME = "class name"
CSS_SELECTOR = "css selector"
在浏览器的控制台操作某元素写法:
# 点击在一个iframe下的按钮,需要先切换到对应的iframe,如果嵌套了一层iframe
document.frames['pwd_login_iframe'].document.getElementById('submitkey').click()
# 如果嵌套了两层iframe
document.frames['indexFrame'].document.frames['pwd_login_iframe'].document.getElementById('submitkey').click()