Selenium - 执行JavaScript脚本
程序员文章站
2022-05-27 13:38:53
...
一、Selenium在当前页进行js交互
1、Selenium能够执行js,这使得Selenium拥有更为强大的能力。既然能执行js,那么js能做的事,Selenium应该大部分也能做。
2、直接使用js操作页面,能解决很多click()不生效的问题。
3、页面滚动到底部,顶部。
4、处理富文本,时间控件的输入。
打开浏览器,按F12打开开发者模式。
二、Selenium中调用js
execute_script:执行js
return:可以返回js的返回结果
execute_script:arguments传参
class TestJS(Base):
def test_js_scroll(self):
self.driver.get('https://www.baidu.com')
self.driver.find_element_by_id('kw').send_keys('selenium')
# self.driver.find_element_by_id('su').click() #点击百度一下
element = self.driver.execute_script('return document.getElementById("su")') #点击百度一下
element.click() # 点击百度一下
self.driver.execute_script('document.documentElement.scrollTop=5000') # 滚动到最底部
time.sleep(2)
self.driver.find_element_by_xpath('//*[@id="page"]/div/a[6]/span[2]').click()
time.sleep(3)
for code in [
'return document.title', 'return JSON.stringify(performance.timing)'
] :
print(self.driver.execute_script(code)) # 打印标题和内容
def test_datetime(self):
self.driver.get('https://www.12306.cn/index/')
time.sleep(2)
time_element =
self.driver.execute_script('a=document.getElementById("train_date");a.removeAttribute("readonly")')
time.sleep(1)
self.driver.execute_script('document.getElementById("train_date").value="2020‐12‐30"')
time.sleep(3)
print(self.driver.execute_script('return document.getElementById("train_date").value'))
三、文件上传、弹框处理
1、文件上传
input标签可以直接使用send_keys(文件地址)上传文件。
用法:
el = driver.find_element_by_id('上传按钮id')
el.send_keys('文件路径+文件名')
def test_file_upload(self):
self.driver.get('https://image.baidu.com/')
self.driver.find_element_by_xpath('//*[@id="sttb"]/img[1]').click()
time.sleep(2)
self.driver.find_element_by_id('stfile').send_keys('E:\\Project_allcode\\photo\\12.png')
time.sleep(3)
2、弹框处理机制
def test_alert(self):
self.driver.get('https://www.runoob.com/try/try.php?filename=jqueryui‐api‐droppable')
self.driver.switch_to_frame('iframeResult')
drag = self.driver.find_element_by_id('draggable') #第一个元素
drop = self.driver.find_element_by_id('droppable') # 第二个元素
action = ActionChains(self.driver)
action.drag_and_drop(drag, drop).perform() # 把第一个元素拖拽到第二个元素那里
time.sleep(2)
print('点击 alert 确认')
self.driver.switch_to.alert.accept() # 切换到弹框
self.driver.switch_to.default_content() # 点击弹框的确认按钮
self.driver.find_element_by_id('submitBTN').click() # 点击“点击运行”按钮
time.sleep(3)
四、最后
对软件测试、接口测试、自动化测试、软件测试零基础入门、性能测试、LR脚本开发、python自动化全栈、面试经验感兴趣可以175317069,群内会有不定期的发放免费的资料链接。如果你有好的学习也资料可以私聊发我,我会注明出处之后分享给大家。
上一篇: 给组件添加拖拽对齐辅助线
推荐阅读
-
javascript立即执行函数
-
kettle javascript脚本解析对象(js脚本编写教程)
-
java执行shell脚本无权限(执行shell脚本无权限讲解)
-
基于命令行执行带参数的php脚本并取得参数的方法
-
shell脚本中执行python脚本并接收其返回值的例子
-
Linux中执行shell脚本的4种方法总结
-
实现javascript的延期执行或者重复执行的两个函数
-
selenium python虚拟点击网页 爬虫翻页功能 href=javascript:void(0)怎么翻页
-
java执行python代码(java远程调用python脚本讲解)
-
Java调用SQL脚本执行常用的方法示例