- 有界面运行
driver = webdriver.Chrome(r"浏览器驱动文件路径")
- 无界面运行
chrome_opt = Options() # 创建参数设置对象.
chrome_opt.add_argument('--headless') # 无界面化.
chrome_opt.add_argument('--disable-gpu') # 配合上面的无界面化.
chrome_opt.add_argument('--window-size=1366,768') # 设置窗口大小, 窗口大小会有影响.
# 创建Chrome对象并传入设置信息.
driver = webdriver.Chrome(chrome_options=chrome_opt)
driver.implicitly_wait(30)
设置最长等待时间30秒(隐式等待)WebDriverWait(driver,30).方法
(显示等待)- driver.maximize_window()
self.assertIn("Python", driver.title)
确定标题或其他文本是否含有"Python"这个字符串element.send_keys("python", Keys.ARROW_DOWN)
可以做一系列操作,比如键盘快捷键输入,发送文件路径等,清除输入的文本用element.clear()
- 处理选择框
from selenium.webdriver.support.ui import Select
select = Select(driver.find_element_by_name('name'))
select.selct_by_index(index)
select.select_by_visible_text("text")
select.select_by_value(value)
- 取消已经选中的选项
select = Select(driver.find_element_by_id('id')) select.deselect_all()
- 将某个元素拖放到另一个元素上
element = driver.find_element_by_name("source")
target = driver.find_element_by_name("target")
from selenium.webdriver import ActionChains
action_chains = ActionChains(driver)
action_chains.drag_and_drop(element,target).perform()
- 窗口操作
<a href="somewhere.html" target="windowName">Click here to open a new window</a>
href跳转的网址,target新窗口的名字,如果没有target就不会打开新窗口。
打开这个窗口:driver.switch_to_window("windowName")
所有窗口:driver.window_handles
回到父窗口:driver.switch_to_default_content()
- 处理对话框:
alert = driver.switch_to_alert()
- 前进或后退:
driver.forward()
driver.back()
- 添加cookies
cookie = {'name':'foo','value':'bar'}
driver.add_cookie(cookie)
获取网页cookies:`driver.get_cookies()`
- 元素定位
- 用链接文本定位超链接
continue_link = driver.find_element_by_link_text('有超链接的文本')
continue_link = driver.find_element_by_partial_link_text('有超链接的文本的一部分')
- 基本异常
- 行为链
调用类:selenium.webdriver.common.action_chains.ActionChains
menu = driver.find_element_by_css_selector("")
hidden_submenu = driver.find_element_by_css_selector("")
ActionChains(driver).move_to_element(menu).click(hidden_submenu).perform()
# actions = ActionChains(driver)
# actions.move_to_element(menu)
# actions.click(hidden_submenu)
# action.perform()
- 保持点击状态:
click_and_hold(on_element=None)
on_element:要点击的元素,如果是None,点击鼠标当前的位置
双击:double_click(on_element=None)
drag_and_drop(source, target)
鼠标左键点击source元素,然后移动到target元素释放鼠标按键
参数: source:鼠标点击的元素 target:鼠标松开的元素
drag_and_drop_by_offset(source, xoffset,yoffset)
拖拽目标元素到指定的偏移点释放
参数: source:点击的参数 xoffset:X偏移量 * yoffset:Y偏移量
key_down(value,element=None)
只按下键盘,不释放。我们应该只对那些功能键使用(Contril,Alt,Shift)
参数: value:要发送的键,值在Keys类里有定义 element:发送的目标元素,如果是None,value会发到当前聚焦的元素上
key_up(value,element=None)
释放键。参考key_down的解释
move_by_offset(xoffset,yoffset)
将当前鼠标的位置进行移动
参数: xoffset:要移动的X偏移量,可以是正也可以是负 yoffset:要移动的Y偏移量,可以是正也可以是负
move_to_element(to_element)
把鼠标移到一个元素的中间
参数: * to_element:目标元素
move_to_element_with_offset(to_element,xoffset,yoffset)
鼠标移动到元素的指定位置,偏移量以元素的左上角为基准
参数: to_element:目标元素 xoffset:要移动的X偏移量 * yoffset:要移动的Y偏移量
perform()
执行所有存储的动作
release(on_element=None)
释放一个元素上的鼠标按键,
参数: * on_element:如果为None,在当前鼠标位置上释放
send_keys(*keys_to_send)
向当前的焦点元素发送键
参数: * keys_to_send:要发送的键,修饰键可以到Keys类里找到
send_keys_to_element(element,*keys_to_send)
向指定的元素发送键
- 警告:
selenium.webdriver.common.alert.Alert(driver)
接受和忽略弹框:
Alert(driver).accept()
Alert(driver).dismiss()