webdriver学习记录2

本文介绍了使用Selenium处理不同类型的网页元素控件的方法,包括时间控件、select选择框、隐藏的下拉框及textarea文本框。针对每种控件提供了具体的Python代码示例,演示如何通过Selenium WebDriver进行交互。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

时间控件处理

时间控件图:

时间控件的前段HTML:


很明显这是一个input表单框,但属性有个readonly,(作用是只能看不能输入内容),处理的总体思路就是:


首先去掉readonly属性,再通过send_keys()向表单传值,最后get_attribute('value')。

对日期控件的处理思路一般为:
1、取消日期控件的readonly属性
2、给value赋值
3、写js代码来实现如上的1,2点,再webdriver对js进行处理

实例:

from selenium import webdriver
from time import sleep

driver = webdriver.Firefox()
driver.get("http://www.sucaijiayuan.com/api/demo.php?url=/demo/20141108-1/")
driver.implicitly_wait(20)
driver.switch_to.frame("iframe")
#首先干掉readonly属性
# js = "document.getElementById('txtBeginDate').removeAttribute('readonly')"  # 1.原生js,移除属性
# js = "$('input[id=txtBeginDate]').removeAttr('readonly')"  # 2.jQuery,移除属性
# js = "$('input[id=txtBeginDate]').attr('readonly',false)"  # 3.jQuery,设置为false
js = "$('input[id=txtBeginDate]').attr('readonly','')"  # 4.jQuery,设置为空(同3)
#通过webdriver执行js代码
driver.execute_script(js)
#向表单输入内容
driver.find_element_by_id("txtBeginDate").send_keys("2017-02-12")
sleep(3)
#get_attribute()方法可以获取属性值
driver.find_element_by_id("txtBeginDate").get_attribute("value")
driver.quit()

select选择框的处理

select框:


非隐藏select框处理思路:

from selenium.webdriver.support.select import Select

  • 定位到select框,通过ID、name、xpath等
  • 执行下拉框操作

Select(e1).select_by_index(2) #通过index选中option,从0开始计算
Select(e1).select_by_value("50") #通过option的value值选中

以百度搜索为例子:

from selenium.webdriver.common.action_chains import ActionChains
from selenium.webdriver.support.select import Select
from selenium import webdriver
from time import sleep
driver = webdriver.Firefox()
driver.get('http://www.baidu.com')
driver.implicitly_wait(30)
e1 = driver.find_element_by_link_text("设置")
ActionChains(driver).move_to_element(e1).perform()
driver.find_element_by_link_text("搜索设置").click()
#先定位到下拉框
e1 = driver.find_element_by_id('nr')
#执行下拉框操作,选中“每页显示50条”
#Select(e1).select_by_index(2) #通过index选中option,从0开始计算
Select(e1).select_by_value("50") #通过option的value值选中
driver.find_element_by_xpath(".//*[@id='gxszButton']/a[1]").click()
sleep(5)
driver.quit()

操作隐藏的下拉框


先把不可见修改为可见,剩下的和可见的下拉框操作一样。

如:js = 'document.querySelectorAll("select")[0].style.display="block";'

document.querySelectorAll("select") 选择所有的select,
[0]表示这当中第一个select框,style.display="block",表示把select修改为可见,
剩下的和可见的select框操作一样了!!
代码:

from selenium import webdriver
from selenium.webdriver.support.select import Select
from time import sleep
driver = webdriver.Firefox()
driver.get("http://192.168.0.107/html5/select_test.html")
driver.implicitly_wait(20)
#选中隐藏的下拉框,将其display改为“block”
js = 'document.querySelectorAll("select")[0].style.display="block";'
#执行js脚本
driver.execute_script(js)
#定位到该下拉框
e = driver.find_element_by_tag_name("select")
Select(e).select_by_index(2)
sleep(3)
driver.quit()

textare文本框处理

textare文本框如图:

处理思路:

首先定义输入文本框的text,然后将text与JavaScript通过“+”拼接。这样做的目的可以使输入内容变得可定义。

最后通过execute_script()执行js代码。

例子:

from selenium import webdriver
driver = webdriver.Firefox()
driver.get("http://192.168.0.107/html5/textarea.html")
#定义输入的内容text
text = "测试一下!!!"
#处理文本框的js代码
js = "var sum=document.getElementById('suggest');sum.value='" + text + "';"
driver.execute_script(js)
driver.quit()

收藏一个:selenium富文本框和edit编辑口处理方法

1.1 selenium webdriver学习(一)------------快速开始 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 3 1.2 selenium webdriver学习(二)————对浏览器的简单操作 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 5 1.3 selenium webdriver学习(三)------------执行js脚本 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 10 1.4 selenium webdriver学习(四)------------定位页面元素 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 12 1.5 selenium webdriver学习(五)------------iframe的处理 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 18 1.6 selenium webdriver学习(六)------------如何得到弹出窗口 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 21 1.7 selenium webdriver学习(七)------------如何处理alert、confirm、prompt对话框 . . . . . . . . .24 1.8 selenium webdriver学习(八)------------如何操作select下拉框 . . . . . . . . . . . . . . . . . . . . . . . . .27 1.9 selenium webdriver学习(九)------------如何操作cookies . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 29 1.10 selenium webdriver学习(十)------------如何把一个元素拖放到另一个元素里面 . . . . . . . . . . .31 1.11 selenium webdriver学习(十一)------------如何等待页面元素加载完成 . . . . . . . . . . . . . . . . . .33 1.12 selenium webdriver学习(十二)------------如何利用selenium-webdriver截图 . . . . . . . . . . . .38
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值