1》单选框操作
-
在html中同一组多个单选框的name属性必须一样
性别
男
女
不详 -
click()
-
is_selected() 是否选中 返回True/False
-
get_attribute(“value”) 单选框的值
<input type='radio' value='男' name="sex"/>
wb.find_elements("name","sex")[0].get_attribute("value")
2》多/复选框操作
- 在html中同一组多个复选框的name属性必须一样
读书
游戏
旅游
-
click()
-
is_selected() 是否选中 True/Fase
-
get_attribute(“value”) 复选框的值
3》下拉选择框操作
-
学历
<select id="education" name="education">
<option value="postgraduate">研究生</option>
<option value="undergraduate">本科</option>
<option value="college">大专</option>
-
对下拉框元素的操作,需要导入Select库
-
from selenium.webdriver.support.select import Select
-
使用步骤:
-
第一步:定位Web元素下拉框——webElement元素
-
web_st= wd.find_element("id","XX")
-
-
第二步:将web元素转换为下拉框对象
- obj_st=Select( web_st )
-
第三步:使用下拉框对象提供方法 选择选项
- select_by_index(下标) 下标从0开始
- select_by_value(”值”)
- select_by_visible_text(“文本”) —-最常用
-
-
获取下拉框元素的值 get_attribute(“value”)
4》移除元素的只读属性
如果页面标签元素 设置了只读属性,则无法使用脚本代码输入内容或都是点击操作。如下面的元面元素
<!--
<h3>只读/禁用属性 </h3>
选择日期:<input id="date" type="date" readonly="true">
进货价格:<input id="price" type="text" disabled="disabled">
-->
解决方法: 使用脚本去执行一个js代码 移除标签属性或修改标签属性的值
- 语法 : mydriver.execute_script(“ js 代码”)
---js定位元素: document.getElementById('id的值')
document.getElementsByName()[0]
document.getElementsByTagName()[0]
document.getElementsByClassName()[0]
---移除标签的只读属性 .removeAttribute('readonly')
---移除标签的禁用属性:.removeAttribute('disabled')
JS 移除标签的只读属性的代码:
js ="document.getElementById('id的值').removeAttribute('readonly')"
使用webdriver对象的execute_script( ) 执行js代码
mydriver.execute_script( js )
- 应用示例:
'''
<input id="date" type="text" readonly="true">
<input id="price" type="text" disabled="disabled">
'''
def demo4_readonly(self):
#第一步:移除日期输入框的只读属性
# document.getElementById('date').removeAttribute('readonly')
self.wd.execute_script("document.getElementById('date').removeAttribute('readonly')")
#第二步:输入日期 2022-01-01
self.wd.find_element("id","date").send_keys("2022-01-01")
#移除价格输入框禁用属性:document.getElementById('price').removeAttribute('disabled')
self.wd.execute_script("document.getElementById('price').removeAttribute('disabled')")
#输入价格 1000
self.wd.find_element("id","price").send_keys("1000")
# 1.定位 男单选框,如果男单选框状态为选中,输出男单选框的值 # 2.定位 女单选框,如果女单选框状态没有选中,点击选中 from selenium import webdriver from time import sleep from selenium.webdriver.support.select import Select from pymouse import PyMouse from pykeyboard import PyKeyboard class Demo1: def __init__(self): self.wb = webdriver.Chrome() # 创建浏览器对象 self.wb.get("file:///C:/Users/aoxiang.liu/Desktop/demo1.html") # 打开被测网页的网址 self.wb.maximize_window() # 网页页面最大化 sleep(1) # 暂停1秒 def day1(self): list_day1=self.wb.find_elements("name","sex") if list_day1[0].is_selected(): print(list_day1[0].get_attribute("value")) sleep(1) if not list_day1[1].is_selected(): list_day1[1].click() #对多选框操作:默认是第一个选中,取消第一个,第二个第三个选中,输出选中的值 def day2(self): list_day2=self.wb.find_elements("name","like") list_day2[0].click() for i in range(1,len(list_day2)): list_day2[i].click() print(list_day2[i].get_attribute("value"),end=" ") print() # 对下拉选择框操作: "大专"使用索引index选择 "本科"使用值value选中 "研究生"使用文本text选中选择 def day3(self): #1.定位web元素下拉框---webElement元素 list_day3=self.wb.find_elements("id","education") #2.将web元素转换为下拉框对象 lst=Select(list_day3) #3.使用下拉框对象提供方法,选择选项 lst.select_by_index(0) #下标从0开始 lst.select_by_value("undergraduate") #从value值开始找 lst.select_by_visible_text("研究生") #从文本内容开始找 def day4(self): m=PyMouse() #设置鼠标操作 m.click(158,559) #定位鼠标点击位置 sleep(2) k=PyKeyboard() #设置键盘操作 k.type_string("abc.txt") #上传文本文件 k.tap_key(k.enter_key) #点击回车键 if __name__ == '__main__': dom=Demo1() # dom.day1() # dom.day2() # dom.day3() dom.day4()