python+selenium自动化脚本中的一些操作方法

  1. webdriver 中比较常用的操作元素的方法有下面几个:
  • send_keys :在元素上模拟按键输入
  • clear: 清除元素的内容,如果可以的话
  • click :单击元素
  • submit :提交表单
  • size:返回元素的尺寸
  • itle:返回当前页面的标题
  • find_elements_by_xx(‘xx’)
  • find_elements: 用于获取一组元素。
  • current_url:获取当前加载页面的URL
  • text:获取元素的文本
  • get_attribute(name):获得属性值
  • is_displayed():设置该元素是否用户可见,本身这个函数用于判断某个元素是否存在页面上(这里的存在不是肉眼看到的存在,而是html代码的存在。某些情况元素的visibility为hidden或者display属性为none,我们在页面看不到但是实际是存在页面的一些元素)

注:submit()要求提交对象是一个表单,更强调对信息的提交。click()更强调
事件的独立性。(比如,一个文字链接就不能用submit()方法。)

  1. 鼠标事件:
  • ActionChains 类鼠标操作的常用方法:
  • context_click() 右击
  • double_click() 双击
  • drag_and_drop(source, target)) 拖动,在源元素上按下鼠标左键,然后移动到目标元素上释放。source: 鼠标按下的源元素,target: 鼠标释放的目标元素。
  • move_to_element() 鼠标悬停在一个元素上
  • click_and_hold() 按下鼠标左键在一个元素上

注:在使用ActionChains 类下面的方法之前,要先将包引入
from selenium.webdriver.common.action_chains import ActionChains

eg:

#引入ActionChains 类
from selenium.webdriver.common.action_chains import ActionChains
...
#定位到要右击的元素
right =driver.find_element_by_xpath("xx")
#对定位到的元素执行鼠标右键操作
ActionChains(driver).context_click(right).perform()
....

ActionChains 用于生成用户的行为,所有的行为都存储在actionchains 对象中,可以通过perform()执行存储的行为。

  1. 键盘事件 ,经常使用到的键盘操作:
  • send_keys(Keys.BACK_SPACE) 删除键(BackSpace)
  • send_keys(Keys.SPACE) 空格键(Space)
  • send_keys(Keys.TAB) 制表键(Tab)
  • send_keys(Keys.ESCAPE) 回退键(Esc)
  • send_keys(Keys.ENTER) 回车键(Enter)
  • send_keys(Keys.CONTROL,‘a’) 全选(Ctrl+A)
  • send_keys(Keys.CONTROL,‘c’) 复制(Ctrl+C)
  • send_keys(Keys.CONTROL,‘x’) 剪切(Ctrl+X)
  • send_keys(Keys.CONTROL,‘v’) 粘贴(Ctrl+V)
  1. selenium中三种等待方式
  • sleep(): 强制等待,设置固定休眠时间。 python 的 time 包提供了休眠方法 sleep() , 导入 time 包后就可以使用 sleep(),进行脚本的执行过程进行休眠。

  • implicitly_wait():隐式等待,也叫智能等待,是 webdirver 提供的一个超时等待。隐式等待一个元素被发现,或一个命令完成。如果超出了设置时间的则抛出异常。

  • WebDriverWait():显式等待,同样也是 webdirver 提供的方法。在设置时间内,默认每隔一段时间检测一次当前页面元素是否存在,如果超过设置时间检测不到则抛出异常。默认检测频率为0.5s,默认抛出异常为:NoSuchElementException

#WebDriverWait()方法使用,共有两种方式
#等待时长10秒,默认0.5秒询问一次
element=WebDriverWait(driver, 10).until(lambda driver : driver.find_element_by_id("kw"))  
element.send_keys("selenium")
# 判断id为kw元素是否消失
is_disappeared = WebDriverWait(driver, 10, 1).\
    until_not(lambda x: x.find_element_by_id("kw").is_displayed())
print is_disappeared

#添加智能等待
#implicitly_wait()方法比 sleep() 更加智能,后者只能选择一个固定的时间的等待,前者可以在一个时间范围内智能的等待
driver.implicitly_wait(30)               
driver.find_element_by_id("su").click()

#添加固定休眠时间
sleep(5)                     #sleep()方法以秒为单位,假如休眠时间小时 1 秒,可以用小数表示。
  • until(method, message=’ ’)
    调用该方法提供的驱动程序作为一个参数,直到返回值不为False。

  • until_not(method, message=’ ’)
    调用该方法提供的驱动程序作为一个参数,直到返回值为False。

  • len():len 为python 语言中的方法,用于返回一个对象的长度(或个数)。

  • pop():pop 也为python 语言中提供的方法,用于删除指定位置的元素,pop()为空默认选择最一个元素。
    例如:

# 打印当前页面上type 为checkbox 的个数
print len(driver.find_elements_by_css_selector('input[type=checkbox]'))

# 把页面上最后1个checkbox 的勾给去掉
driver.find_elements_by_css_selector('input[type=checkbox]').pop().click()
  1. 操作窗口的一些方法 :
  • current_window_handle:获得当前窗口句柄
  • window_handles:返回的所有窗口的句柄到当前会话
  • switch_to_window():用于处理多窗口操作的方法,与我们前面学过的switch_to_frame() 是类似,switch_to_window():用于处理多窗口之前切换,switch_to_frame() 用于处理多框架的切换。
  • close():在关闭一个窗口时用的是close()方法,而非quit();close()用于关闭当前
    窗口,quit()用于退出驱动程序并关闭所有相关窗口。
  1. 操作alert/confirm/prompt的一些方法:使用switch_to.alert()方法定位到alert/confirm/prompt。然后使用text/accept/dismiss/send_keys 按需进行操作。
  • text :返回alert/confirm/prompt 中的文字信息。
  • accept :点击确认按钮。
  • dismiss :点击取消按钮,如果有的话。
  • send_keys :输入值,这个alert\confirm 没有对话框就不能用了,不然会报错。
  1. 上传文件操作:
  • 定位上传按钮后,在发送本地文件的路径即可
    示例:
#定位上传按钮,添加本地文件
driver.find_element_by_name("file").send_keys('D:\\selenium_use_case\upload
_file.txt')
  1. 下载文件操作:
已标记关键词 清除标记
相关推荐
©️2020 CSDN 皮肤主题: 大白 设计师:CSDN官方博客 返回首页