python脚本进行单选框 , 复选框和下拉框的定位操作

1》单选框操作

  • 在html中同一组多个单选框的name属性必须一样

    性别


    不详

  • click()

  • is_selected() 是否选中 返回True/False

  • get_attribute(“value”) 单选框的值

    1. <input type='radio' value='男' name="sex"/>
    2. wb.find_elements("name","sex")[0].get_attribute("value")

2》多/复选框操作

  • 在html中同一组多个复选框的name属性必须一样

读书
游戏
旅游

  • click()

  • is_selected() 是否选中 True/Fase

  • get_attribute(“value”) 复选框的值

3》下拉选择框操作

  • 学历

    1. <select id="education" name="education">
    2. <option value="postgraduate">研究生</option>
    3. <option value="undergraduate">本科</option>
    4. <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》移除元素的只读属性

  1. 如果页面标签元素 设置了只读属性,则无法使用脚本代码输入内容或都是点击操作。如下面的元面元素
  2. <!--
  3. <h3>只读/禁用属性 </h3>
  4. 选择日期:<input id="date" type="date" readonly="true">
  5. 进货价格:<input id="price" type="text" disabled="disabled">
  6. -->
  7. 解决方法: 使用脚本去执行一个js代码 移除标签属性或修改标签属性的值
  • 语法 : mydriver.execute_script(“ js 代码”)
  1. ---js定位元素: document.getElementById('id的值')
  2. document.getElementsByName()[0]
  3. document.getElementsByTagName()[0]
  4. document.getElementsByClassName()[0]
  5. ---移除标签的只读属性 .removeAttribute('readonly')
  6. ---移除标签的禁用属性:.removeAttribute('disabled')
  7. JS 移除标签的只读属性的代码:
  8. js ="document.getElementById('id的值').removeAttribute('readonly')"
  9. 使用webdriver对象的execute_script( ) 执行js代码
  10. mydriver.execute_script( js )
  • 应用示例:
  1. '''
  2. <input id="date" type="text" readonly="true">
  3. <input id="price" type="text" disabled="disabled">
  4. '''
  5. def demo4_readonly(self):
  6. #第一步:移除日期输入框的只读属性
  7. # document.getElementById('date').removeAttribute('readonly')
  8. self.wd.execute_script("document.getElementById('date').removeAttribute('readonly')")
  9. #第二步:输入日期 2022-01-01
  10. self.wd.find_element("id","date").send_keys("2022-01-01")
  11. #移除价格输入框禁用属性:document.getElementById('price').removeAttribute('disabled')
  12. self.wd.execute_script("document.getElementById('price').removeAttribute('disabled')")
  13. #输入价格 1000
  14. 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()
  • 0
    点赞
  • 4
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值