本文共 4254 字,大约阅读时间需要 14 分钟。
定位一组对象一般用于以下场景:
示例: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
:获得属性值。
多层框架或窗口的定位:
对于一个现代的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”)
示例:level_locate.html
Level Locate Level locate
下拉框是我们最常见的一种页面元素,对于一般的元素,我们只需要一次就定位,但下拉框里的内容需要进行两次定位,先定位到下拉框,再定位到下拉框内里的选项。
示例:drop_down.htm
注意:switch_to_alert()只能处理原生的alert
示例一:alert.html
alert alert
hover to see tooltip
示例二:send.html(输入值)
更多的时候我们在实际的应用中碰到的并不是简单警告框,而是提供更多功能的会话框。
示例:modal.html(只有点击 Close ,才可以关闭对话框)
modal modal
上传过程一般要打开一个本地窗口,从窗口选择本地文件添加。所以,一般会卡在如何操作本地窗口添加上传文件。故只要定位上传按钮,通过send_keys
添加本地文件路径就可以了。绝对路径和相对路径都可以,关键是上传的文件存在。
示例:upload.html
upload_file upload_file
转载地址:http://wrjwi.baihongyu.com/