美文网首页软件测试
如何用JS来搞定webdriver无法操作的元素

如何用JS来搞定webdriver无法操作的元素

作者: 爱学技术的小仙女酱 | 来源:发表于2019-08-09 21:01 被阅读2次

JavaScript小介绍

    众所周知JS是一门轻量级的脚本语言,我们可以将它们插入HTML页面中,在插入HTML后,所有的现代浏览器都可以执行它们。

    我们可以在HTML中使用JS编写函数、处理数据,还可以改变HTML中的元素、元素属性、元素样式等等。

JavaScript用法

    在HTML中要使用JS,是极其简单的事情,只需要在HTML中插入一个<script>标签,将你的JS代码放置在<script>和</script>中间即可。对于代码的位置,既可以放置于<head>标签内,也可以是<body>标签内,其具体位置可以视执行位置而定。

一个小的示例:

    alert("My First JavaScript");

    document.write("<h1>This is a heading</h1>");

    当然为了让JS能与HTML进行分离,也可以将代码放入单独的文件中,引入方法如下(此处外部JS文件名为:myScript.js):

    JS的语法跟许多C系编程(C、C++、Java、Python等)非常类似,所以芒果就不做过多的介绍,大家可以在w3schools进行学习。

JavaScript操作DOM

    在知道JS的用法之后,我们一起来看看JS到底是怎么HTML元素的。

    当网页被加载时,浏览器就会创建页面的文档对象模型DOM(Document Object Model),JS就是利用DOM来访问HTML中所有的元素。

    HTML DOM被构造为如下所示对象树——HTML DOM树:

    通过DOM,JS 可以获得创建动态 HTML 的权限,包括改变页面中的所有 HTML 元素、改变页面中的所有 HTML 属性、改变页面中的所有 CSS 样式、删除或添加HTML 元素和属性、对页面中所有已有的 HTML 事件作出反应、 能在页面中创建新的 HTML 事件。

一个改变页面元素属性的示例:

    Hello World!

    document.getElementById("p1").innerHTML="New text!";

JavaScript在自动化中的一个小运用

    在对JS有了基本的认识之后,我们来看一个在UI自动化过程的小运用。我们在做web UI自动化的过程中经常会遇到能够定位元素,但是却无法对于元素进行操作的情况。

    比如下例中,就是由于被操作元素有readonly属性,所以无法使用webdriver提供的方法对于输入框进行赋值,所以我们可以通过使用JS来删除该属性后,再进行输入操作。

操作元素代码如下:

    使用JS进行处理,以及后续赋值操作Python代码如下:

    #使用JS操作DOM来删除readonly属性

    str_js ="var setDate=document.getElementById('train_date');setDate.removeAttribute('readonly');"

    driver.execute_script(str_js)

    #使用JS操作DOM来清空输入框

    str_js1 ="var setDate=document.getElementById('train_date');setDate.value='';"

    driver.execute_script(str_js1)

    #使用webdriver定位输入框,并输入内容

    date_element = driver.find_element_by_id("train_date")

    date_element.send_keys("2019-06-30")

总结

    在前文中,跟大家一起对JS进行了一个小的学习,也利用了一个小的例子,带大家领略了前端知识之后,在自动化测试方面的小便捷,希望大家能有所收获哟~

    如果是想学习更多的关于本文的知识,可以学习交流可以加我微信:xiang520and 或者QQ群:243771258一起探讨学习完整的前端基础(HTML+CSS+JS,包括BootStrap、Angular、React、Vue)的学习哟。

相关文章

网友评论

    本文标题:如何用JS来搞定webdriver无法操作的元素

    本文链接:https://www.haomeiwen.com/subject/hrhkjctx.html