上一期介绍了自动化测试
Python+Selenium元素定位,这期我们讲讲元素操作。
常用元素操作
在一个web网站,我们经常做的操作,无非是点击,输入这些。
输入一般是对输入框输入。
点击操作多一些:点击按钮、超链接,点击选择下拉框、单选框、复选框等。
那么通过selenium工具是如何实现这些操作的呢?
1.元素的操作方法
Web元素--按钮,对应HTML代码如下:
<code> /<code>
对按钮进行点击操作---click方法:
<code>element = driver.find_element_by_id("su") /<code>
<code>element.click() /<code>
或者把两行干脆写到一起:
<code>driver.find_element_by_id("su").click() /<code>
2 .超链接点击操作
Web元素--超链接,对应HTML代码如下:
对超链接进行点击操作---click方法:
<code>element = driver.find_element_by_link_text("自动化_百度百科") /<code>
<code>element.click() /<code>
3 .输入框输入操作
Web元素--输入框,对应HTML代码如下:
<code> /<code>
对输入框做输入
------clear与send_keys()方法。
为保证效果,先清空输入框,再输入内容:
<code>element = driver.find_element_by_link_text("kw") /<code>
<code>element.clear() /<code>
<code>element.send_keys("python") /<code>
4 .单选框选择操作
Web元素--输入框,对应HTML代码如下:
<code> 男<code> 女/<code>/<code>
点击选择男,再改为女:
<code>ele = driver.find_element_by_id("input1") /<code>
<code>ele.is_selected() # False,选项未被选中 /<code>
<code>ele.click() # 点击选择男 /<code>
<code>ele.is_selected() # True,选项被选中 /<code>
<code>driver.find_element_by_id("input2").click() # 选择女 /<code>
<code>ele.is_selected() # False,选项取消选中 /<code>
* 如何取消单选框的选择? ----选择其他选项,当前选项自动取消选择
5 .复选框选择操作
Web元素--输入框,对应HTML代码如下:
<code><code> 爬山 /<code><code>打球 /<code><code> 阅读/<code>兴趣爱好:
/<code>
点击选择栏,选择读书和爬山:
<code>ele = driver.find_element_by_name("chbox1") /<code>
<code>print(ele.is_selected()) # False,选项未被选中 /<code>
<code>ele.click() # 点击选择 /<code>
<code>print(ele.is_selected()) # True,选项被选中 /<code>
<code>ele.click() # 再次点击取消选择 /<code>
<code>print(ele.is_selected()) # False,选项取消选中 /<code>
6 .借助Select对象完成下拉框操作
<code>出生日期:/<code>
下拉框的处理有两种方式一种是借助selenium的Select对象,一种是直接操作
<code>ele = driver.find_element_by_name("birthdayYear") /<code>
<code>select = Select(ele) #创建select对象 /<code>
<code>选择对应的选项: /<code>
<code>select.select_by_value(self, value) #根据value选择 /<code>
<code>select.select_by_index(self, index); #根据索引选择,0,1,2 /<code>
<code>select.select_by_visible_text(self, text); #根据text选择 /<code>
<code> /<code>
<code>取消选择(针对多选下拉框): /<code>
<code>select.deselect_all(self); #取消全部选中项 /<code>
<code>select.deselect_by_value(self, value); /<code>
<code>获取信息: /<code>
<code>select.first_selected_option; #获取第一个被选中项 /<code>
<code>select.all_selected_options; #获取所有的选中项 /<code>
<code>select.options; #获取所有选项 /<code>
<code>select.is_multiple; #是否多选下拉框 /<code>
7.通过点击方法实现下拉框选择:
<code>ele = driver.find_element_by_xpath("//select/option[2]") /<code>
<code>ele.click() #点击选择第二个选项 /<code>
<code>print(ele.is_selected()) /<code>
通用元素操作
我们在网站上做的操作是非常有限的,模拟这些操作也比较简单。
除了模拟人工操作,有时需要做条件判断或者结果验证,那么需要的操作更多:
1 .获取元素属性
假设我们要操作的元素对应HTML代码如下:
<code> /<code>
如何获取这个input元素的class属性的值呢?
<code>首先我们需要先找到它,通过driver对象的find方法进行元素定位: /<code>
<code>element = driver.find_element_by_id("kw") /<code>
<code>定位到元素后,通过get_attribute方法进行属性值获取: /<code>
<code>text = element.get_attribute("class") # 获取class属性值 /<code>
<code>print(text) # 输出属性值 /<code>
<code>Print(element.text) # 获取元素的文本内容 /<code>
当然这里,这个input的value值
maxlength值都可以通过类似方式获取
* webElement
对象还有个类似方法get_property(),两者使用差不多,其中property使用范围小些。在区分不出应该用哪个的情况下,推荐使用前者。
2 .获取元素状态
<code>/<code>
还是这个元素,我们想要了解这个元素是否正常展示,是否允许用户操作。
<code>首先我们需要先找到它,通过driver对象的find方法进行元素定位: /<code>
<code>element = driver.find_element_by_id("kw") /<code>
<code>定位到元素后,通过is_方法进行状态判断: /<code>
<code>element.is_displayed() # 获取元素是否正常展示 /<code>
<code>element.is_enabled() # 元素是否允许操作 /<code>
<code>Element.is_selected() # 单选框复选框元素是否被选中/<code>