web自动化:Javascript操作页面元素
某些特殊情况下,使用selenium的api无法操作页面元素,可以通过js来完成
一.Js定位
js操作中的webelement通过console控制台来进行js定位:
WebElement webelement=document.getElementById(id);

二.元素无法输入
时间控件输入方法:
可点击时间控件下拉框选择(比较麻烦);
有些软件的时间控件标签为input,可直接输入,如果时间控件标签不是input;
不可点击直接输入,可通过js来改变元素的源代码属性
设置/去除元素属性:setAttribute/removeAttribute
案例:12306的时间选择框
JavascriptExecutor javascriptExecutor=(JavascriptExecutor)webDriver;
//移除源代码内导致不可输入的属性
javascriptExecutor.executeScript("document.getElementById('train_date').removeAttribute('readonly')");
webDriver.findElement(By.id("train_date")).clear(); //清除原有元素
//清除了只读的属性后,元素就可以输入了
webDriver.findElement(By.id("train_date")).sendKeys("2021-5-14");
三.元素无法通过click点击
元素可被定位到,但是无法通过click点击,是由于点击事件被父元素消耗掉
WebElement webElement=webDriver.findElement(By.xpath("//span[text()='登录']"));
WebElement WebElement1=x;
JavascriptExecutor javascriptExecutor=(JavascriptExecutor) webDriver;
//js传参:把要点击的元素进行传参
javascriptExecutor.executeScript("arguments[1].click()",webElement1,webElement);
四.滚动条操作
滚动条案例:
JavascriptExecutor javascriptExecutor(JavascriptExecutor)webDriver;
//滚动到底部
javascriptExecutor.executeScript("window.scrollTo(0,document.body.scrollHeight);");
//js滚动滚动指定距离
javascriptExecutor.executeScript("window.scrollTo(0,800);");
//滚动到指定位置
javascriptExecutor.executeScript("webelement.scrollIntoViewIfNeeded(true);");
web自动化:Javascript操作页面元素的更多相关文章
- 使用javaScript操作页面元素
from selenium import webdriver import time import unittest from selenium.common.exceptions import We ...
- Python3 Selenium自动化web测试 ==> 第五节 WebDriver高级应用 -- 使用JavaScript操作页面元素
学习目的: 中级水平技术提升 在WebDriver脚本代码中执行JS代码,可以解决某些 .click()方法无法生效等问题 正式步骤: Python3代码如下 # -*- coding:utf-8 - ...
- webdriver高级应用-使用JavaScript操作页面元素
Webdriver搞不定的,需要用js,无需引入有关js的包就可用 在WebDriver脚本代码中执行JavaScript代码,来实现对页面元素的操作.此方法主要用于解决在某些情况下,页面元素的.cl ...
- 常用JavaScript操作页面元素的方法
1.取得dropdownlist的选中值 var ddl =document.getElementById('<%=ddlusers.ClientID%>'); var index = d ...
- Web自动化 - 选择操作元素 2
文章转自 白月黑羽教Python 前面我们看到了根据 id.class属性.tag名 选择元素. 如果我们要选择的 元素 没有id.class 属性, 这时候我们通常可以通过 CSS selector ...
- 使用protractor操作页面元素
Protractor是为Angular JS应用量身打造的端到端测试框架.它可以真实的驱动浏览器,自动完成对web应用的测试.Protractor驱动浏览器使用的是WebDriver标准,所以使用起来 ...
- 用javaScript获取页面元素值
用JavaScript获取页面元素常见的三种方法: getElementById() ...
- Selenium with Python 005 - 调用js操作页面元素
WebDriver提供了execute_script()方法来执行JavaScript方法,格式如 driver.execute_script(script,*args) 执行js一般有两种场景,一是 ...
- 利用 jQuery 操作页面元素的方法,实现电商网站购物车页面商品数量的增加和减少操作,要求单项价格和总价随着数量的改变而改变
查看本章节 查看作业目录 需求说明: 利用 jQuery 操作页面元素的方法,实现电商网站购物车页面商品数量的增加和减少操作,要求单项价格和总价随着数量的改变而改变 当用户单击"+" ...
- 使用 jQuery 操作页面元素的方法,实现浏览大图片的效果,在页面上插入一幅小图片,当鼠标悬停到小图片上时,在小图片的右侧出现与之相对应的大图片
查看本章节 查看作业目录 需求说明: 使用 jQuery 操作页面元素的方法,实现浏览大图片的效果,在页面上插入一幅小图片,当鼠标悬停到小图片上时,在小图片的右侧出现与之相对应的大图片 实现思路: 在 ...
随机推荐
- 阿里的DataV和QuickBi区别
首先说下DataV吧 分为老版和新版(二者之间没有什么太大的差别,存在的基本都是组件上的配置或是更多不同组件的新增,但是如果你是在项目上进行开发,你首先要知道客户用的DataV用的是什么版本,如果你们 ...
- 使用iceberg-使用Iceberg数据湖需要注意的点
一.资料准备 1.mysql地址选择 因为阿里云只读节点binlog保留时间短,需要用读写集群地址.可以登录阿里云控制台查看地址是只读还是读写,不清楚的话可以找dba要读写地址. 二.Iceberg概 ...
- 15. Docker容器监控之(CAdvisor+InfluxDB+Granfana)的详细安装和常规使用
15. Docker容器监控之(CAdvisor+InfluxDB+Granfana)的详细安装和常规使用 @ 目录 15. Docker容器监控之(CAdvisor+InfluxDB+Granfan ...
- [ABC213G] Connectivity 2 题解
好好好. 我们设当前处理 \(i\) 的答案,那么最后的图就可以分成两个部分:\(1\) 所在的联通块和其他,根据乘法原理,答案就是它们二者方案的乘积. 设 \(f_s\) 表示集合 \(s\) 中所 ...
- led色块是什么,bin指值是什么
色块其实就是色温的区域范围. LED的色温按标准是分段的, 既然是分段,就有一个最大值和最小值,在色坐标系中是一个,X和Y的坐标对应的也就有一个最大值和最小值,这样一个色温段就是以小块的区域,即所谓的 ...
- Vue 前端页面利用MediaRecorder实现音频录制
Don't Talk, code is here: 重点是startRecord 方法 <template> <div> <el-tooltip class=" ...
- QT5笔记:9. QT的容器类
QList 中存放对象指针,QVector直接存放对象,所以访问性能更高 QMap中key不可以重复,QMultiMap中key可以重复 QMap在内存中顺序存储,QHash不是顺序存储的(hash算 ...
- Java开发中long类型转换json传递到前端后精度丢失问题
将文章的id由long类型手动改为String类型(需要修改表结构); 可以使用Jackson进行序列化解决
- Typecho 从零开始搭建个人博客详细教程
搭建Typecho个人博客需要进行一些准备工作.以下是大致的教学步骤: 1. 准备工作: - 一台支持PHP和MySQL的服务器,可以是虚拟主机或者自己搭建的服务器. - 一个域名,用于访 ...
- 利用JS 代码块 为你的 Typecho博客添加一个 Copy 按钮
引入 JS 将以下代码添加到主题 header.php 中的 </head> 标签前,本主题也可以前往 控制台 - 设置外观 - 主题自定义扩展,将它添加到 自定义 HTML 元素拓展 - ...