51Testing软件测试论坛

标题: Python selenium,无法定位页面中的日期选择框,尝试用JS关掉只读失败? [打印本页]

作者: 测试积点老人    时间: 2019-2-12 09:14
标题: Python selenium,无法定位页面中的日期选择框,尝试用JS关掉只读失败?
0、这是需要定位的位置:
  1. <input class="form-control listDate startDate" readonly="readonly" name="startDate" value="" type="text">
复制代码
1、Python selenium,无法定位页面中的日期选择框,面向百度编程后发现可能是句柄的位置不对,于是加上了
  1. el_iframe=el_ywjg=browser.find_element_by_id('frame_content')
  2. browser.switch_to.frame('frame_content')
复制代码
2、仍然定位不到日期选择框,继续搜索后觉得可能是因为“readonly”属性,于是决定使用js去掉,但是这个框没有Id,于是换用getElementsByName(半路出家,完全不懂js,不知道对不对),于是变成了
  1. js="document.getElementsByName('startDate').removeAttribute('readonly')"
  2. browser.execute_script(js)
复制代码
_报错:TypeError: document.getElementsByName(...).removeAttribute is not a function
3、查菜鸟教程发现“HTML DOM Document 对象方法”中,document.getElementById()返回的是一个对象,而我用的getElementsByName()返回的是一个对象集合,所以加上了一个[0],变成:
  1. js="document.getElementsByName('startDate')[0].removeAttribute('readonly')"
  2. browser.execute_script(js)
  3. ```__
  4. _TypeError: document.getElementsByName(...)[0] is undefined
复制代码
无计可施了,而且这个问题去搜索都搜不出来了……请各位前辈指教。_

作者: jingzizx    时间: 2019-2-13 12:45
xpath方法为什么不用
作者: abcsell    时间: 2019-2-13 15:34
工具本身的问题,没那么好用,试试别的工具
作者: 海海豚    时间: 2019-2-13 16:28

for js in document.getElementsByName('startDate'):
js.removeAttribute('readonly')

看看能否使用

另外,readonly属性不妨碍selenium读取dom
作者: jia739091604    时间: 2019-2-14 10:55
试一下xpath方法,应该可行




欢迎光临 51Testing软件测试论坛 (http://bbs.51testing.com/) Powered by Discuz! X3.2