Python Selenium常用元素操作API
元素定位需要两部分:①元素信息(浏览器开发者工具) ②代码定位元素的api(id,name,xppth,css等方法)。
元素识别后就是要对元素进行操作,用火狐定位元素,用谷歌做自动化测试比较好。
定位到元素后,需要对元素进行操作,常见的有鼠标点击、键盘操作等,这取决于我们定位到的对象支撑哪些操作。一般来说,所有与页面交互的操作都将通过WebElement接口。
注意:元素信息用复制的方式+引号的使用:外面用单,里面就用双,防止匹配失败
一、常用的四种操作
clear(): 清除对象的内容
driver.find_element(By.ID,'kw').clear()
send_keys(): 在对象上模拟按键输入
driver.find_element(By.ID,'kw').send_keys("12306")
click(): 单击对象,强调对象的独立性
driver.find_element(By.ID,'su').click()
submit() : 提交表单,要求对象必须是表单,表单就是form
driver.find_element(By.ID,'form').submit()
①提交表单的(get post协议提交) ②解决大表单的提交按钮 不好定位的问题,不用click(),直接submit()
注意:这种情况不能有name=’submit’的元素,否则该元素会和submit()方法造成混淆,导致错误。
二、获取的方法
size : 返回对象的尺寸
driver.find_elementr(By.CSS_SELECTOR,"#J_username").size
text : 获取对象的文本
driver.find_element(By.CSS_SELECTOR,"a.sendpwd").text
get_attribute(“属性名”):获取对象的属性值
driver.find_element(By.CSS_SELECTOR,"#J_username").get_attribute("name")
三、判断的三种方法
s_displayed():用来判断对象是否可见,即css的display属性是否为none
driver.find_element(By.CSS_SELECTOR,"#J_username").is_displayed()
is_enabled():判断对象是否被禁用 是否可用
driver.find_element(By.CSS_SELECTOR,"#J_username").is_enabled()
is_selected():判断对象是否被选中。
driver.find_element(By.ID,"head_checkbox").is_selected()
三、其他方法
tag_name:获取对象标签名称
driver.find_element(By.ID,"head_checkbox").tag_name
location:获取元素坐标
driver.find_element(By.ID,"head_checkbox").location
screenshot():对元素进行截图
driver.find_element(By.ID,'su').screenshot('element.png')
1 from selenium import webdriver 2 from selenium.webdriver.common.by import By 3 4 driver = webdriver.Firefox() 5 driver.get('https://www.baidu.com') 6 driver.find_element(By.ID,'kw').send_keys('selenium') 7 driver.find_element(By.ID,'kw').clear() 8 driver.find_element(By.ID,'su').click() 9 driver.find_element(By.ID,'form').submit()#类似做了点击登录,1、提交表单(get、post) 2、解决有些大表单提交按钮在浏览器下方固定隐藏,元素定位不到 10 driver.find_element(By.CLASS_NAME,'s_ipt').size#返回对象尺寸 11 driver.find_element(By.CLASS_NAME,'mnav.c-font-normal.c-color-t').text#获取对象文本 12 driver.find_element(By.CLASS_NAME,'bg.s_btn').get_attribute()#获取对象的属性值 13 driver.find_element(By.CLASS_NAME,'bg.s_btn').get_property()#一般不用,和get_attribut()类似 14 driver.find_element(By.ID,'kw').is_displayed()#用来判断对象是否可见,即css的displ属性是否为none 15 driver.find_element(By.ID,'kw').is_enabled()#判断对象是否被禁用 16 driver.find_element(By.ID,'kw').is_selected()#判断对象是否被选中 17 driver.find_element(By.ID,'su').screenshot('element.png')#截图,java要截图比较麻烦,需要用到AotoIt