RF中js脚本的使用&selenium执行js脚本
一、前言
在浏览器上的网页以及基于html5的手机app上交互逻辑都是由javascript驱动的。简单说 ,javascript是一种运行在浏览器中的解释型,轻量级编程客户端语言 ,主要应用在BS架构的浏览器端 ,实现在Html的完全控制。
1.selenium能够执行js脚本,这使得selenium拥有更为强大的能力。既然能执行js,那么js能做的事情,selenium应该大部分都能做。
2.直接使用js操作页面,可以解决很多click()不生效的问题
3.页面滚动到底部、顶部
4.处理富文本、时间控件的输入等。
二、示例
RF执行js脚本有2种方法:
关键字如下:
1、脚本不带返回值
execute javascript *code2、脚本带返回值
${value}= execute javascriptreturn *code
写python脚本使用selenium执行js脚本示例如下(时间控件的输入):
# -*- coding:utf-8 -*-【RF中js脚本的使用&selenium执行js脚本】运行结果:
# @File:test_js.py
import time
import allure
from selenium_test.selenium_js.base import Base
class TestJS(Base):
@allure.feature("打开百度,搜索selenium测试,点击搜索,滚动到底部")
def test_js_scroll(self):
self.driver.get("https://www.baidu.com/")
self.driver.find_element_by_id('kw').send_keys('selenium测试')
element = self.driver.execute_script("return document.getElementById('su')")
element.click()
time.sleep(2)
self.driver.execute_script("document.documentElement.scrollTop=2000")
time.sleep(2)
self.driver.find_element_by_xpath('//*[@id="page"]/div/a[10]').click()
time.sleep(5)
for code in [" return document.title", "return JSON.stringify(performance.timing)"]:
print(self.driver.execute_script(code))
@allure.feature("修改12306网站的出发时间")
def test_datetime(self):
self.driver.get("https://www.12306.cn/index/")
self.driver.execute_script("a=document.getElementById('train_date'); a.removeAttribute('readonly'); a.value='https://www.it610.com/article/2020-08-10'")
time.sleep(5)
print(self.driver.execute_script('return document.getElementById("train_date").value'))
time.sleep(3)
文章图片
推荐阅读
- 热闹中的孤独
- JAVA(抽象类与接口的区别&重载与重写&内存泄漏)
- 放屁有这三个特征的,请注意啦!这说明你的身体毒素太多
- 一个人的旅行,三亚
- 布丽吉特,人生绝对的赢家
- 慢慢的美丽
- 尽力
- 一个小故事,我的思考。
- 家乡的那条小河
- 《真与假的困惑》???|《真与假的困惑》??? ——致良知是一种伟大的力量