在UI自动化测试中,常会使用js处理一些特殊的交互,比如浏览器的滑动、富文本和时间控件,演示案例如下:

1、浏览器的滑动

 1 from selenium import webdriver
 2 from selenium.webdriver.common.by import By
 3 from selenium.webdriver.support.ui import WebDriverWait
 4 from selenium.webdriver.support import expected_conditions as es
 5 import time as t
 6 driver=webdriver.Chrome()
 7 driver.maximize_window()
 8 driver.get("http://www.taobao.com")
 9 driver.implicitly_wait(10)
10 #浏览器滑到底部
11 down="var q=document.documentElement.scrollTop=10000"
12 driver.execute_script(down)
13 t.sleep(5)
14 #浏览器滑到顶部
15 up="var q=document.documentElement.scrollTop=0"
16 driver.execute_script(up)
17 t.sleep(5)
18 driver.quit()

2、富文本

 1 from selenium import webdriver
 2 from selenium.webdriver.common.by import By
 3 from selenium.webdriver.support.ui import WebDriverWait
 4 from selenium.webdriver.support import  expected_conditions as es
 5 import time as t
 6 def richText(driver,content):
 7     '''
 8     实现在富文本里面输入内容
 9     :param driver: webdriver实例化后的对象信息
10     :param content: 富文本里面需要输入的文字内容
11     :return:
12     '''
13 #"ueditor_0"为frame的id号
14     js="document.getElementById('ueditor_0').contentWindow.document.body.innerHTML='{0}'".format(content)
15     driver.execute_script(js)
16 driver=webdriver.Chrome()
17 driver.maximize_window()
18 driver.get('https://uutool.cn/ueditor/')
19 driver.implicitly_wait(10)
20 t.sleep(5)
21 richText(driver=driver,content="好好学习Pyhton!")
22 t.sleep(5)
23 driver.quit()

3、时间控件

1)时间控件的逻辑:

a.取消时间控件的只读属性;

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

2)时间控件案例

 1 from selenium import webdriver
 2 from selenium.webdriver.common.by import By
 3 from selenium.webdriver.support.ui import WebDriverWait
 4 from selenium.webdriver.support import  expected_conditions as es
 5 import time as t
 6 def startTime(driver,content):
 7     '''开始时间控件'''
 8     js="$(\"input[placeholder='开始时间≥当前时间']\").removeAttr('readonly');" \
 9     "$(\"input[placeholder='开始时间≥当前时间']\").attr('value','{0}')".format(content)
10     driver.execute_script(js)
11 
12 def endTime(driver,content):
13     '''结束时间控件'''
14 #"placeholder"为选中文本框的placeholder的属性。
15     js="$(\"input[placeholder='结束时间>开始时间']\").removeAttr('readonly');" \
16          "$(\"input[placeholder='结束时间>开始时间']\").attr('value','{0}')".format(content)
17     driver.execute_script(js)
18 driver=webdriver.Chrome()
19 driver.maximize_window()
20 driver.get('file:///D:/test/code/testDev/UI%E8%87%AA%E5%8A%A8%E5%8C%96%E6%B5%8B%E8%AF%95/Time/index.html')
21 driver.implicitly_wait(10)
22 startTime(driver=driver,content='2022-01-01 00:00:00')
23 t.sleep(3)
24 endTime(driver=driver,content='2022-06-29 18:45:32')
25 t.sleep(3)
26 driver.quit()