wangwt123

UI自动化测试-JavaScript实战

JavaScript实战

1、JavaScript定义

JavaScript(简称“JS”)是一种具有函数优先的轻量级,解释型或即时编译型的编程语言。虽然它是作为开发Web页面的脚本语言而出名,但是它也被用到了很多非浏览器环境中,JavaScript 基于原型编程、多范式的动态脚本语言,并且支持面向对象、命令式、声明式、函数式编程范式。

2、浏览器的滑动--以淘宝为例

向上滑动:up="var q=document.documentElement.scrollTop=0"

向下滑动:down="var q=document.documentElement.scrollTop=10000"

 1 from selenium import webdriver  #包:selenium,模块:webdriver
 2 from selenium.webdriver.common.by import By
 3 import  time as t
 4 
 5 driver=webdriver.Chrome()
 6 driver.maximize_window()
 7 driver.get("https://www.taobao.com/")
 8 driver.implicitly_wait(20)
 9 t.sleep(3)
10 down="var q=document.documentElement.scrollTop=10000"
11 driver.execute_script(down)  #执行脚本
12 t.sleep(3)
13 up="var q=document.documentElement.scrollTop=0"
14 driver.execute_script(up)
15 t.sleep(5)
16 driver.quit()

3、富文本的处理

什么是富文本?

实现在富文本里面输入内容:

param driver: webdriver实例化后的对象信息

param content: 富文本里面需要输入的文字内容

return:

在实现输入内容之前,需要Js的方式来实现交互,框架为:

使用JS的方式来交互的框架
def richText(driver,content):
    js = "document.getElementById('ueditor_0').contentWindow.document.body.innerHTML='{0}'".format(content)
    driver.execute_script(js)

# 其中,getElementById('ueditor_0')括号里的内容是你测试该网页的iframe的id名,并不是一成不变的。

 以"https://uutool.cn/ueditor/"网站为例:

 1 from selenium import webdriver  #包:selenium,模块:webdriver
 2 from selenium.webdriver.common.by import By
 3 import  time as t
 4 
 5 #js框架
 6 def richText(driver,content):
 7     js = "document.getElementById('ueditor_0').contentWindow.document.body.innerHTML='{0}'".format(content)
 8     driver.execute_script(js)
 9 
10 driver = webdriver.Chrome()
11 driver.maximize_window()
12 driver.get("https://uutool.cn/ueditor/")
13 driver.implicitly_wait(20)
14 t.sleep(9)
15 richText(driver=driver,content="English")
16 t.sleep(6)
17 driver.quit()

4、时间控件

在实际的测试工作中,很多时间控件都是只读属性。

将time(1)的文件解压,放到我们之前安装Python的地址里,以我的为例:

然后打开time(1)文件夹里的“index.html”,通过检查,我们可以发现它是只读的:

在如上的代码中可以很清晰的看到它是只读属性,那么我们需要填写时间的属性,具体解决问题的步骤为:

  • 取消时间控件的只读属性
  • 取消只读属性后,操作input控件的value,其实我们知道input里面输入的内容最终是在value的属性里面。

改正后的效果为:

通过自动化测试来实现这一操作是:

通过在实现输入内容之前,需要Js的方式来实现交互,框架为:

#开始时间控件
def startTime(driver,content): 
    js = "$(\"input[placeholder='开始时间≥当前时间']\").removeAttr('readonly');" \
         "$(\"input[placeholder='开始时间≥当前时间']\").attr('value','{0}')".format(content)
    driver.execute_script(js)

#结束时间控件
def endTime(driver,content): 
    js = "$(\"input[placeholder='结束时间>开始时间']\").removeAttr('readonly');" \
         "$(\"input[placeholder='结束时间>开始时间']\").attr('value','{0}')".format(content)
    driver.execute_script(js)
# 其中,(\"input[placeholder='开始时间≥当前时间']\"),input里的属性placeholder=‘’里的内容,是随我们测试的网站的内容动态变化的,并不是一成不变的。

代码为:

 1 from selenium import webdriver  #包:selenium,模块:webdriver
 2 from selenium.webdriver.common.by import By
 3 import  time as t
 4 
 5 #开始时间控件
 6 def startTime(driver,content): 
 7     js = "$(\"input[placeholder='开始时间≥当前时间']\").removeAttr('readonly');" \
 8          "$(\"input[placeholder='开始时间≥当前时间']\").attr('value','{0}')".format(content)
 9     driver.execute_script(js)
10 
11 #结束时间控件
12 def endTime(driver,content): 
13     js = "$(\"input[placeholder='结束时间>开始时间']\").removeAttr('readonly');" \
14          "$(\"input[placeholder='结束时间>开始时间']\").attr('value','{0}')".format(content)
15     driver.execute_script(js)
16 
17 driver=webdriver.Chrome()
18 driver.maximize_window()
19 driver.get("file:///C:/python3/Time(1)/Time/index.html")
20 driver.implicitly_wait(20)
21 t.sleep(3)
22 startTime(driver=driver,content="2022-01-01 00:00:00")
23 t.sleep(3)
24 endTime(driver=driver,content="2022-06-29 16:40:00")
25 t.sleep(3)
26 driver.quit()

 

posted on 2022-06-29 19:29  DOUBLE快乐  阅读(193)  评论(0编辑  收藏  举报

导航