selenium web driver 使用JS修改input属性
selenium获取input时候,发现type=”hidden” 的input无法修改value,经牛人指点,可以使用js修改
首先html源文件如下,设置为text 、hidden、submit
<html>
<head>
<title>this is a test </title>
<script type="text/javascript">
function display_alert()
{
alert("I am an alert box!!")
}
</script>
</head>
<body>
<form action="form_action.jsp" method="get">
<p>Name: <input type="text" id="fn" name="fullname" /></p>
<p>Email: <input type="hidden" id="em" name="email" value="dbyl@dbyl.cn"/></p>
<p><input type="submit" id="su" onclick="display_alert()" value="submit" /></p> </form>
</body>
</html>
在浏览器加载之后如下:

这时候email 不能对外显示
使用selenium,代码如下
import org.openqa.selenium.Alert;
import org.openqa.selenium.JavascriptExecutor;
import org.openqa.selenium.By;
import org.openqa.selenium.WebDriver;
import org.openqa.selenium.WebElement;
import org.openqa.selenium.chrome.ChromeDriver;
//import org.openqa.selenium.ie.InternetExplorerDriver;
//import org.openqa.selenium.remote.DesiredCapabilities; public class selenium { /**
* @param args
* @throws InterruptedException
*/
public static void main(String[] args) throws InterruptedException {
// TODO Auto-generated method stub String URL="E:\\2.html";
//set web driver property
System.setProperty("webdriver.chrome.driver", "E:\\chromedriver.exe");
//create a WebDriver instance
WebDriver driver = new ChromeDriver() ;
driver.manage().window().maximize(); //load the URL
driver.get(URL);
//print current title
System.out.println(driver.getTitle());
//run JS to modify hidden element
((JavascriptExecutor)driver).executeScript("document.getElementById(\"em\").type ='text';");
Thread.sleep(3000);
//run JS and add a alert
((JavascriptExecutor)driver).executeScript("alert(\"hello,this is a alert!\");value=\"Alert\""); //wait for 3 seconds
Thread.sleep(3000); //create a alert instance
Alert alert1=driver.switchTo().alert();
//print alert text
System.out.println(alert1.getText());
//click accept button
alert1.accept(); //create elements
WebElement we=driver.findElement(By.id("fn"));
WebElement su=driver.findElement(By.id("su"));
WebElement em=driver.findElement(By.id("em"));
// input something
we.sendKeys("username test");
Thread.sleep(3000);
//print email tagname
System.out.print("Email isDislayed="+em.isDisplayed()+"\n");
Thread.sleep(3000);
//click submit button
su.click();
Thread.sleep(3000); Alert alert=driver.switchTo().alert();
System.out.print( alert.getText());
alert.accept(); Thread.sleep(3000); //close web browser
driver.quit(); } }
可以通过js修改input的type value,执行js只需要export
import org.openqa.selenium.JavascriptExecutor;
运行结果如下:
Starting ChromeDriver (v2.9.248315) on port 30175
this is a test
hello,this is a alert!
Email isDislayed=true
I am an alert box!!
selenium web driver 使用JS修改input属性的更多相关文章
- js修改input的type属性问题
js修改input的type属性有些限制.当input元素还未插入文档流之前,是可以修改它的值的,在ie和ff下都没问题.但如果input已经存在于页面,其type属性在ie下就成了只读属性了,不可以 ...
- 25+ Useful Selenium Web driver Code Snippets For GUI Testing Automation
本文总结了使用Selenium Web driver 做页面自动化测试的一些 tips, tricks, snippets. 1. Chrome Driver 如何安装 extensions 两种方式 ...
- 修改input属性placeholder的样式
<!doctype html> <html lang="en"> <head> <meta charset="UTF-8&quo ...
- selenium web driver 配合使用testng
首先为eclipse添加testng插件 步骤如下:help->Install New SoftWare... 2. 添加testng链接,该链接可以在这里找到 For the Eclipse ...
- selenium web driver 实现截图功能
在验证某些关键步骤时,需要截个图来记录一下当时的情况 Webdriver截图时,需要引入 import java.io.File; import java.io.IOException; import ...
- 使用原生JS 修改 DIV 属性
本例参考并改进自:https://www.jianshu.com/p/2961d9c317a3 大家可以一起学习!! <!DOCTYPE html> <html lang=" ...
- js修改input的type属性问题(兼容所有浏览器,主要用于密码类的默认有提示文字的效果)
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01//EN" "http://www.w3.org/TR/html4/stri ...
- Js修改input值后怎么同步修改绑定的v-model值
v-model只是一种语法糖,底层的方法还是去监听input事件.所以可以使用dispatchEvent事件给元素分配一个input事件,这样可以手动触发 inputElement 的 input 事 ...
- 自动化测试-19.selenium定位之通过JS修改html写入日期数据以及从文本读取数据实战
# -*- coding: utf-8 -*- from selenium import webdriver from selenium.webdriver.support.select import ...
随机推荐
- StringIO和BytesIO
1. StringIO 很多时候,数据读写不一定是文件,也可以在内存中读写. StringIO顾名思义就是在内存中读写str. 要把str写入StringIO,我们需要先创建一个StringIO,然后 ...
- Redis设计与实现读书笔记(二) 链表
链表作为最基础的数据结构,在许多高级语言上已经有了很好的实现.由于redis采用C语言编写,需要自己实现链表,于是redis在adlist.h定义了链表类型.作者对于这部分没什么好说,源码比较简单,如 ...
- react native 图片样式导致的坑
最近项目中遇到一个问题,代码如下,点击进入另一个页面时需要显示的图片会黑屏,另外退回到该页面的时候下面代码中的第一个图片会全黑几秒才渲染,从另一个路径进入该页面时并没有此问题,就找了半天是不是数据的问 ...
- FilenameFilter过滤文件名
前言: 文件IO是程序设计语言的一个特点,本文将针对Java的File文件名过滤进行测试. 测试目录截图: 测试结果: data.txt output-.txt output-.txt output- ...
- 【codeforces 148D】 Bag of mice
http://codeforces.com/problemset/problem/148/D (题目链接) 题意 包中有w个白鼠,b个黑鼠.公主和龙轮流画老鼠,公主先画,谁先画到白鼠谁就赢.龙每画完一 ...
- Python 【第七章】:Html 和 CSS
HTML是英文Hyper Text Mark-up Language(超文本标记语言)的缩写,他是一种制作万维网页面标准语言(标记).相当于定义统一的一套规则,大家都来遵守他,这样就可以让浏览器根据标 ...
- django缓存优化中caches参数如何配置?
在python开发中,如果运营django进行编写,为了提升效率,常常需要优化缓存,缓存优化中必须掌握的caches参数相关知识: CACHES 配置参数概述 - 格式 CACHES 字典配置格式如下 ...
- 简单的Linux的用户权限管理
企业生产环境用户权限集中管理方案案例 建立中要添加如下的项目经验: 在了解公司业务流程后,提出权限整改解决方案,改进公司超级用户Root权限泛滥的问题. 我首先写好方案后,给老大看,取得老大的支持后, ...
- CCS应用中常见的一些小技巧
在单片机开发中,通常需要精确估算代码运行时间,用于对算法优化以及对项目平台选择提供参考,通常算法如果用汇编编写,可以人工计算出运行时间,用C语言编写也可以通过反汇编代码而计算到较为精确的运行时间,但当 ...
- sql 批量插入数据到Sqlserver中 效率较高的方法
使用SqlBulk #region 方式二 static void InsertTwo() { Console.WriteLine("使用Bulk插入的实现方式"); Stopwa ...