首页 > 技术文章 > UI自动化之JS处理

heertong 2020-03-03 22:49 原文

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

 

推荐阅读