时间控件处理
时间控件图:
时间控件的前段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()