在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()