博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
webdriver常用的API(2)
阅读量:3942 次
发布时间:2019-05-24

本文共 4254 字,大约阅读时间需要 14 分钟。

文章目录

1.定位一组元素

定位一组对象一般用于以下场景:

  • 批量操作对象,比如将页面上所有的checkbox 都勾上。
  • 先获取一组对象,再在这组对象中过滤出需要具体定位的一些对象。比如定位出页面上所有的checkbox,然后选择最后一个。

示例:checkbox.html

    
Checkbox

checkbox

在这里插入图片描述

脚本:勾选checkbox1、checkbox2、checkbox3

from selenium import webdriverimport timeimport osdriver = webdriver.Chrome()file_path='file:///'+os.path.abspath("D:/Bite/PycharmProjects/1/text/checkbox.html")driver.get(file_path)# 5个input标签# 选择页面上所有的input,然后从中过滤出所有的 checkbox 并勾选之inputs = driver.find_elements_by_tag_name("input")for input in inputs:    if input.get_attribute('type') == "checkbox":        input.click()time.sleep(10)driver.quit()

get_attribute:获得属性值。

在这里插入图片描述

2.多层框架/窗口定位

多层框架或窗口的定位:

  • switch_to_frame() 【备注:此方法已其弃用】
  • switch_to_window()

对于一个现代的web 应用,经常会出现框架(frame) 或窗口(window)的应用,这也就给我们的定位带来了一个难题。

有时候我们定位一个元素,定位器没有问题,但一直定位不了,这时候就要检查这个元素是否在一个frame 中,seelnium webdriver 提供了一个switch_to_frame 方法,可以很轻松的来解决这个问题。

switch_to_frame(name_or_id_or_frame_element):

可以简单记忆一下,如果这个frame有name和id属性那么就用这两个属性就好,如果没有的话可以先用find_element_by_xxx方法找到这个frame元素,然后把这个元素传进去,这也是可行的。

switch_to_frame()把当前定位的主体切换了frame里。怎么理解这句话呢?我们可以从frame的实质去理解。

frame中实际上是嵌入了另一个页面,而webdriver每次只能在一个页面识别,因此才需要用switch_to_frame方法

去获取frame中嵌入的页面,对那个页面里的元素进行定位。

switch_to_default_content:从frame中嵌入的页面里跳出,跳回到最外面的原始页面中。

示例:frame.html

    
frame

frame

inner.html

    
inner

inner

click

脚本:通过switch_to_frame() 方法来进行定位

多层窗口定位

有可能嵌套的不是框架,而是窗口,还有真对窗口的方法:switch_to_window

用法与switch_to_frame 相同:driver.switch_to_window(“windowName”)

3.层级定位

示例:level_locate.html

    
Level Locate

Level locate

4.下拉框处理

下拉框是我们最常见的一种页面元素,对于一般的元素,我们只需要一次就定位,但下拉框里的内容需要进行两次定位,先定位到下拉框,再定位到下拉框内里的选项。

示例:drop_down.htm

在这里插入图片描述

5.alert、confirm、prompt 的处理

  • text 返回alert/confirm/prompt 中的文字信息
  • accept 点击确认按钮
  • dismiss 点击取消按钮,如果有的话
  • send_keys 输入值,这个alert\confirm 没有对话框就不能用了,不然会报错

注意:switch_to_alert()只能处理原生的alert

示例一:alert.html

    
alert

在这里插入图片描述

在这里插入图片描述

示例二:send.html(输入值)

    

在这里插入图片描述

6.DIV对话框的处理

更多的时候我们在实际的应用中碰到的并不是简单警告框,而是提供更多功能的会话框。

示例:modal.html(只有点击 Close ,才可以关闭对话框)

    
modal

modal

Click

在这里插入图片描述

在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

7.上传文件操作

上传过程一般要打开一个本地窗口,从窗口选择本地文件添加。所以,一般会卡在如何操作本地窗口添加上传文件。故只要定位上传按钮,通过send_keys 添加本地文件路径就可以了。绝对路径和相对路径都可以,关键是上传的文件存在。

示例:upload.html

    
upload_file

upload_file

在这里插入图片描述

在这里插入图片描述
在这里插入图片描述

转载地址:http://wrjwi.baihongyu.com/

你可能感兴趣的文章
X-Security X的安全控制
查看>>
openVAS的安装
查看>>
Centos 6.5 初始安装无网卡驱动解决方法
查看>>
linux中的网桥bridge
查看>>
linux中的teaming与bonding
查看>>
LVM
查看>>
用shell切分文件--split
查看>>
python中判断字符是否为中文
查看>>
Python - 利用zip函数将两个列表(list)组成字典(dict)
查看>>
python-全角转半角
查看>>
Python pass语句作用与用法
查看>>
Java double,float设置小数点位数
查看>>
PyCharm & Jupyter
查看>>
为什么要用Jupyter Notebook
查看>>
sklearn中的LogisticRegression模型
查看>>
pandas.get_dummies 的用法
查看>>
机器学习-训练模型的保存与恢复(sklearn)
查看>>
Spark(二): spark-submit命令详解
查看>>
细品 - 逻辑回归(LR)*
查看>>
hive: size与spilt连用
查看>>