HTML中的js在自动化中的应用

javascript:JavaScript一种直译式脚本语言,是一种动态类型、弱类型、基于原型的语言,内置支持类型。它的解释器被称为JavaScript引擎,为浏览器的一部分,广泛用于客户端的脚本语言,最早是在HTML(标准通用标记语言下的一个应用)网页上使用,用来给HTML网页增加动态功能

在自动化中的作用:

1.web自动化测试框架的原理就是通过js来实现对web元素的操作

  selenium他将我们要进行自动化操作的网页内嵌到他自己的网页,然后通过脚本语言(js)去执行自动化操作(自动化框架appium,qtp,macaca,robotframework)

2.可以提高我们自动化用例执行的效率和稳定性

  时间日历控件   js可以提取浏览器提供的很多对象,提供了很丰富的页面元素操作方法,进行操作

  文件上传

3.selenium难以实现的操作可以用js实现

  a、一些隐藏的按钮,通过js更改元素的属性,显示隐藏案例

  b、滚动条

  c、 前段限制输入

 

web网页组成

结构(Structure)、表现(Presentation)和行为(Behavior)

html:定义网页内容===结构(Structure)

css:描述网页的布局==表现(Presentation)

js:实现网页的行为==行为(Behavior)

脚本必须放在<Script></Script>中实现

例子:

 

 

 

页面元素<input type="text" class="input" value="2018-07-21" id="train_date" readonly="">

selenium实现时间日历选择:

#点击时间控件

driver.find_element_by_id('train_date').click()

time.sleep(3)

#点击下一个月的按钮

<a href="javascript:void(0);" class="first"></a>

/html/body/div[10]/div[1]/div[1]/a[1]

driver.find_element_by_xpath("/html/body/div[10]/div[1]/div[1]/a[1]").click()

time.sleep(3)

#点击4月5号

<div class="so" style="color: rgb(49, 49, 49);">5</div>

/html/body/div[10]/div[1]/div[2]/div[5]/div

driver.find_element_by_xpath("/html/body/div[10]/div[1]/div[2]/div[5]/div").click()

 

js实现时间日历控件选择:

# document.getelementbyid这个是js中根据id获取元素(值)的写法。如:
# <input type="text" id="test" value="1111"/>
# var value = document.getElementById("test").value;//获取id为test的input的value

js = document.getElement('train_date').value(2020-04-22)  #定位元素

driver.execute_script(js) # 执行js 

time.sleep(3)

 

 

 

# 登录是弹窗

1、第一种方法

①注:在JavaScript的console中回车执行

②childNodes[1],表示元素节点位置
③removeAttribute(“target”),表示删除元素

js = 'document.getElementsByClassName("site-nav-right fr")[0].childNodes[1].removeAttribute("target")'
driver.execute_script(js) #调用js方法,同时执行javascript脚本
driver.find_element_by_link_text('登录').click()
driver.find_element_by_id("username").send_keys("*****")

 

2、第二种方法
JavaScript比较复杂,我们可不可以通过selenium定位元素来执行JavaScript的脚本,可以的

①通过selenium定位元素登录链接
login_link = driver.find_element_by_link_text(‘登录’)
②把login_link元素传入JavaScript语句,代替
document.getElementsByClassName(“site-nav-right fr”)[0].childNodes[1],而arguments[0]可以帮我们把selenium的元素传入到JavaScript语句中
arguments指的是execute_script()方法中js代码后面的所有参数,arguments[0]表示第一个参数,argument[1]表示第二个参数
js=’arguments[0].removeAttribute(argument[1])’
driver.execute_script(js,login_link,”target”)
③点击登陆链接
login_link.click()

login_link = driver.find_element_by_link_text('登录')

js='arguments[0].removeAttribute(argument[1])'
driver.execute_script(js,login_link,"target")
login_link.click()

posted @ 2021-07-04 09:37  书院小先生  阅读(292)  评论(0编辑  收藏  举报