在进行UI自动化过程会遇到滚动条下拉、隐藏元素定位、只读属性元素的编辑、富文本处理等,此时可以使用JS处理后,再使用execute_script()方法执行
1、滚动条下拉处理
from selenium import webdriver import time as t driver = webdriver.Chrome() driver.maximize_window() driver.get('https://www.baidu.com/') driver.find_element_by_id('kw').send_keys('自动化测试') driver.find_element_by_id('su').click() t.sleep(2) script = "document.documentElement.scrollTop=1000" #向下滚动 driver.execute_script(script) t.sleep(1) script1 = "document.documentElement.scrollTop=0" #向上滚动 driver.execute_script(script1) t.sleep(1) driver.quit()
2、隐藏元素定位、只读属性元素处理
<!DOCTYPE html> <html lang="en"> <head> <meta charset="UTF-8"> <title>Title</title> </head> <body> <center> <input type="hidden" name="na" id="na"> <input id="kw" name="nr" readonly="readonly"> </center> </body> </html>
from selenium import webdriver import time as t driver = webdriver.Chrome() driver.maximize_window() driver.get("D:\pycharmwokspace\UITEST\html\index4.html") t.sleep(2) script = "document.getElementById('na').removeAttribute('type')" #移除type属性 driver.execute_script(script) t.sleep(2) script2 = "document.getElementById('kw').removeAttribute('readOnly')" #移除readOnly属性 driver.execute_script(script2) t.sleep(1) driver.find_element_by_id('kw').send_keys('测试') t.sleep(1) driver.quit()
3、富文本处理,富文本一般嵌套在iframe中
from selenium import webdriver import time as t driver = webdriver.Chrome() driver.maximize_window() driver.get('http://ueditor.baidu.com/website/onlinedemo.html') t.sleep(1) js = "document.getElementById('ueditor_0').contentWindow.document.body.innerHTML='自动化测试'" #id处填写iframe的ID,innerHTML= 需要输入的内容 driver.execute_script(js) t.sleep(2) driver.quit()