莫愁前路无知己,天下谁人不识君。。。。

python+selenium精华知识之二------时间与定位(时间文本框)

上一篇 / 下一篇  2017-09-08 15:50:53 / 个人分类:测试技巧

方法1、直接定位
driver.find_element_by_id("train_date").clear()
driver.find_element_by_id("train_date").send_keys("2016-12-25")

方法2、移除readonly属性变输入
基本思路:先用js去掉readonly属性,然后直接输入日期文本内容
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.switch_to.frame('iframe')
# 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)
driver.execute_script(js)
driver.find_element_by_id('txtBeginDate').send_keys('2016-08-24')
sleep(2)
print driver.find_element_by_id('txtBeginDate').get_attribute('value')
driver.quit()

方法3、也是移除readonly属性变输入
方法2不行的情况下使用,也可直接使用,当有两个时间文本框时,可以一次性去除多个文本框
js = "$('.datebox .textbox-text').removeAttr('readonly')"
driver.execute_script(js)
driver.find_element_by_xpath('//*[@id="contestRulesForm"]/table/tr[3]/input[1]').send_keys('2016-08-24')
driver.find_element_by_xpath('//*[@id="contestRulesForm"]/table/tr[4]/input[1]').send_keys('2016-08-25')
js1 = "$('.datebox').find('input[name=\"contestStartTm\"]').val('"+2016-08-24+"')"
driver.execute_script(js1)
#js2 = "$('.datebox').find('input[name=\"contestDeadline\"]').val('"+2016-08-25+"')"
#driver.execute_script(js2)####js2加不加取决于,js1与js2的两个时间之间的校验规则

TAG: Python 自动化

 

评分:0

我来说两句

Open Toolbar