一、解决定位并操作uneditable元素

尝试了通过id,xpath等等定位元素后点击都提示Element is not clickable at point

再看了下可以click的元素发现上面有onClick事件

查看了一下元素是span

几番操作都不行,最后还是请教的大神,通过js脚本来操作

其实浏览器中可以F12,然后同等的输入js脚本,点击Enter,发现页面会有函数对应的页面操作

将js脚本同等移动到java中

$("[data-date='2016-10-26']").mousedown()发现通过上面的js脚本可以模拟到在uneditable元素上面进行点击操作

((JavascriptExecutor) driver).executeScript("$(\"[data-date='2016-10-26']\").mousedown()");

如果这句看不懂的可以去补一下jQuery的知识点,我也是查阅jQuery才看懂的

二、顺带介绍一下js操作滚动条

String high = "scroll(0,1000)";
         ((JavascriptExecutor) driver).executeScript(high);

当然上面的这种写法有点多次一举,完全可以放在一句里面执行

((JavascriptExecutor) driver).executeScript("window.scroll(0,1000");

当然更加智能一点的方法是

((JavascriptExecutor) driver).executeScript("window.scroll(0,document.body.scrollHeight)");

((JavascriptExecutor) driver).executeScript("在此放入你的js脚本");

还有更加活用的直接根据页面元素的位置来移动浏览器的滚动条

比如移动某元素的顶部与浏览器齐平

((JavascriptExecutor) driver).executeScript("arguments[0].scrollIntoView();", element);

移动某元素的底部与浏览器齐平

((JavascriptExecutor) driver).executeScript("arguments[0].scrollIntoView(false);", element);

js脚本会有$符号,记得带上“”将$涵盖,同时对于脚本语句里面有"的,要带上转义

由此得知,js脚本还是很强大的

三、有的时候你遇到的js前端代码真的特别无语

比如对于这种<a class=button search_button set_button btn btn-green>Test</a>

里面有很多空格而且这个元素也没有对应的js响应事件

这个时候就需要补充一下js前端知识

告诉一个巧的方法,关于如何找到这个元素上面的触发事件

a元素里面有文本Test,可以在对应js里面搜索到文本Test所在的位置,然后查阅一下js上下文,结合js+jQuery的知识,你就可以找到包裹的触发事件了

比如我找到的是这种

$(".set_button", infoElement).click(function(){。。。}

很显然可以通过$(".set_button").cick()来模拟a元素的点击

运用js解决java selenium元素定位问题的更多相关文章

  1. Java Selenium - 元素操作 (三)

    接上一篇,我们依然以京东的网站做示例. 三,单选项 下面来做这样一条case: 1. 登录京东旅行网页. 2. 在国内机票板块,购买从北京到武汉的往返机票,时间为明天出发,一周后返回. 3.搜索机票. ...

  2. java+selenium元素定位和元素操作

    1.元素定位 ID定位元素: findElement(By.id(“”)); 通过元素的名称定位元素: findElement(By.name(“”)); 通过元素的html中的位置定位元素: fin ...

  3. Java Selenium - 元素操作 (四)

    四,弹出框 京东购物车为例 , 点击‘删除’ 或者‘移到我的关注’ ,就会弹出下面这个框框,练吧: (其实这也不是常规的弹出框,二是div css前端技术做的效果,本想做个Alert的案例,实在不好找 ...

  4. Java Selenium - 元素定位(一)

    一,单个元素对象定位 Webdriver通过findElement() , findElements()等方法调用By对象来定位和查询元素 , findElement()返回一个元素对象,否则抛出异常 ...

  5. Java + selenium 元素定位(5)之By Xpath

    这篇关于Xpath方法的文章和之前那篇CSS的方法一样,使用前,需要先掌握一些Xpath的相关知识.当然,网上也有各种工具可以帮助我们获取到元素的Xpath,但是这并不代表着我们就可以不用了解Xpat ...

  6. Java + selenium 元素定位(4)之By CSS

    这篇我要介绍元素定位的倒数第二个方法啦,就是基于CSS的元素定位.关于一些CSS的知识,我这里就不累赘的讲了,以后可能会单独写一篇关于CSS的介绍.当然个人推荐如果之前完全没有CSS只是储备的,可以选 ...

  7. Java + selenium 元素定位(3)之By TagName

    本篇介绍findElement接口中的By TagName方法.首先,要知道什么是tagname.之前我们使用F12开发者工具查看网页元素是,发现每行代码前都有<input>.<bo ...

  8. Java + selenium 元素定位(2)之By LinkText/PartialLinkText

    本章介绍的两种方法都是对于网页上的文字链接的定位操作.根据名字,我们就可以看出来,这两者其实很相似,那么他们的不同在哪里呢. By LinkText()方法,是对一个的网页超链接,我们所需要输入的关键 ...

  9. Java + selenium 元素定位(1)之By id/Name/ClassName

    这篇文章开始,要介绍web自动化核心的内容,也是最困难的部分了,就是定位元素,并去对元素进行操作.想要对元素进行操作,第一步,也是最重要的一步,就是要找到这个元素,如果连元素都定位不到,后续什么操作都 ...

随机推荐

  1. IEnumerable 使用foreach 详解

    自己实现迭代器 yield的使用 怎样高性能的随机取IEnumerable中的值 我们先思考几个问题: 为什么在foreach中不能修改item的值? 要实现foreach需要满足什么条件? 为什么L ...

  2. PRML读书笔记——Mathematical notation

    x, a vector, and all vectors are assumed to be column vectors. M, denote matrices. xT, a row vcetor, ...

  3. 决策树Decision Tree 及实现

    Decision Tree 及实现 标签: 决策树熵信息增益分类有监督 2014-03-17 12:12 15010人阅读 评论(41) 收藏 举报  分类: Data Mining(25)  Pyt ...

  4. PHP安全性

    一.防sql注入 用户通过输入完整的字符,来和sql语句拼接成带有破坏性的sql语句,服务器执行该语句,造成破坏. 1使用mysql_real_escape_string()过滤数据,该方法在未来版本 ...

  5. 利用BMFont和NGUI制作字体集

    Unity中常常需要制作字体,也算是Unity的基本优势吧!其实质就是BMFont和NGUI制作字体.这里把步骤介绍一下: 1.先下载BMFont这个工具 2.Font Settings  设置:(1 ...

  6. CSS3响应式布局之弹性盒子

    CSS3弹性盒模型可以轻松的创建自适应浏览器流动窗口的布局或自适应字体大小的布局.同时该盒子决定了一个盒子在其他盒子的分布方式,及如何处理可用的空间. 自己写了一个弹性盒子的demo: 主要HTML代 ...

  7. linux初始化配置-----网络配置

    一.设置linux网络 1)零时设置ip地址 由于centos7默认没有ifconfig命令所以为了使用方便我们先安装net-tool使我们能使用ifconfig命令查看ip地址 ·挂载系统光盘 [r ...

  8. IDispatch error #3092

    在采用ADO访问ACCESS数据库的时候,出现IDispatch error #3092错误的原因之一是在SQL语句中使用了保留关键字.比如:如果表的名称为User 则会出现该错误.,若字段为valu ...

  9. CentOS6.5 本地源搭建Ceph

    拓扑图 OS: CentOS X86_64,desktop -免密码登录 -修改/etc/sysconfig/network   --hostname -修改/etc/hosts/ -关闭iptabl ...

  10. struct内存对齐1:gcc与VC的差别

    struct内存对齐:gcc与VC的差别 内存对齐是编译器为了便于CPU快速访问而采用的一项技术,对于不同的编译器有不同的处理方法. Win32平台下的微软VC编译器在默认情况下采用如下的对齐规则:  ...