selenium常用api

2022-04-24  本文已影响0人  清风昙

浏览器

  1. maximize_window() #将浏览器最大化显示
  2. set_window_size(480, 800) #设置浏览器大小
  3. back()和 forward()方法 #前进后退
  4. driver.refresh() #页面刷新

定位/操作对象
webdriver 提供了一系列的元素定位方法,常用的有以下几种:

获取单个的:find_element_by_xxx()
获取所有的:find_elements_by_xxx()获取所有的
传数据:send_keys()
点击:click()
清除数据:clear()
提交:submit()

其他常用WebElement方法
获取该对象的尺寸大小:driver.find_element_by_id("kw").size()

获取该对象的文本:driver.find_element_by_id("cp").text

获取该对象的属性:driver.find_element_by_id('su').get_attribute('type')

该对象是否可见(布尔):driver.find_element_by_id("kw").is_displayed()

键盘事件
from selenium.webdriver.common.keys import Keys

  1. send_keys(Keys.BACK_SPACE) 删除键(BackSpace)
  2. send_keys(Keys.SPACE) 空格键(Space)
  3. send_keys(Keys.TAB) 制表键(Tab)
  4. send_keys(Keys.ESCAPE) 回退键(Esc)
  5. send_keys(Keys.ENTER) 回车键(Enter)
  6. send_keys(Keys.CONTROL,'a') 全选(Ctrl+A)
  7. send_keys(Keys.CONTROL,'c') 复制(Ctrl+C)
  8. send_keys(Keys.CONTROL,'x') 剪切(Ctrl+X)
  9. send_keys(Keys.CONTROL,'v') 粘贴(Ctrl+V)

层级定位
driver.find_element_by_id('xx').find_element_by_link_text('xx').click()
这里用到了二次定位,通过对 Link1 的单击之后,出现下拉菜单,
先定位到下拉菜单,再定位下拉菜
单中的选项。当然,如果菜单选项需要单击,可通过二次定位后也直接跟 click()操作。

frame定位
switch_to_frame方法

跳转句柄

  1. current_window_handle获得当前窗口句柄
  2. window_handles返回的所有窗口的句柄到当前会话
  3. switch_to_window()
  4. close() 与quit的区别是关闭标签页,而不是退出程序

select(option)
对这种类型的下拉框一般的处理是两次点击,第一点击弹出下拉框,
第二次点击操作元素。当然,也有些下拉框是鼠标移上去直接弹出的,
那可以使用 move_to_element()进行操作

文件上传
直接定位file标签sendkeys绝对路径或者相对路径

调用js
execute_script

控制浏览器滚动条
利用js操作滚动条实现,但是selenium3中支持自动搜索页面,不需要再操作滚动条来检索标签元素,了解即可
js="var q=document.documentElement.scrollTop=10000"
driver.execute_script(js)
time.sleep(2)

cookie操作

  1. get_cookies() 获得所有 cookie 信息
  2. get_cookie(name) 返回特定 name 有 cookie 信息
  3. add_cookie(cookie_dict) 添加 cookie,必须有 name 和 value 值
  4. delete_cookie(name) 删除特定(部分)的 cookie 信息
  5. delete_all_cookies() 删除所有 cookie 信息

获取对象的属性

#选择页面上所有的 tag name 为 input 的元素
inputs = driver.find_elements_by_tag_name('input')
#然后循环遍历出 data-node 为594434493的元素,单击勾选
for input in inputs:
if input.get_attribute('data-node') == '594434493':
input.click()
上一篇下一篇

猜你喜欢

热点阅读