Selenium中怎样解决输入框带有readonly属性或存在日历框问题

Selenium中怎样解决输入框带有readonly属性或存在日历框问题

在学习Selenium WebDriver API时,我们通常会遇到带有readonly属性的输入框或日历框(如下图),这时我们不能直接对这些类型的输入框模拟按键输入我们想要的数据。
带有readonly属性的输入框
带有readonly属性的输入框日历框
日历框

解决方案1 常规思维

可以多定位几次元素,点击元素,但是这样比较繁琐,在某些情况下不能用,比如下拉框选项下面还存在选项,这样就可能出现不能定位的问题;日历框使用点击的方式也不灵活,直接输入时间会更加方便。

解决方案2 使用js代码去掉readonly属性

先定位到元素,然后用removeAttribute(“readonly”)方法删除属性
在别人的博客中大多都是使用js代码定位元素并去除readonly属性
例如:

    js = 'document.getElementById("train_date").removeAttribute("readonly");
    driver.execute_script(js)

由于本人不怎么了解js代码,对webdriver定位元素比较熟悉,所以查看了selenium调用js代码的一些博客,先用webdriver定位元素,再用js代码去掉readonly属性。

	pag=driver1.find_element_by_xpath('//*[@id="pane-first"]/div/div/ul/li[2]/ul/li[1]')
	driver1.execute_script("arguments[0].removeAttribute('readonly')",pag)

解决方案3 js方法输入日期

其实很简单,直接改掉输入框元素的value值就可以

driver1.execute_script('arguments[0].value="100条/页"',pag)
  • 6
    点赞
  • 26
    收藏
    觉得还不错? 一键收藏
  • 6
    评论
评论 6
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值