Selenium web driver 使用JS修改input属性

简介:
selenium获取input时候,发现type=”hidden” 的input无法修改value,经牛人指点,可以使用js修改
  首先html源文件如下,设置为text 、hidden、submit
  View Code
  在浏览器加载之后如下:
  这时候email 不能对外显示
  使用selenium,代码如下
1 import org.openqa.selenium.Alert;
2 import org.openqa.selenium.JavascriptExecutor;
3 import org.openqa.selenium.By;
4 import org.openqa.selenium.WebDriver;
5 import org.openqa.selenium.WebElement;
6 import org.openqa.selenium.chrome.ChromeDriver;
7 //import org.openqa.selenium.ie.InternetExplorerDriver;
8 //import org.openqa.selenium.remote.DesiredCapabilities;
9
10 public class selenium {
11
12     /**
13      * @param args
14      * @throws InterruptedException
15      */
16     public static void main(String[] args) throws InterruptedException {
17         // TODO Auto-generated method stub
18
19         String URL="E:\\2.html";
20         //set  web driver property
21         System.setProperty("webdriver.chrome.driver", "E:\\chromedriver.exe");
22         //create a WebDriver instance
23         WebDriver driver = new ChromeDriver()    ;
24         driver.manage().window().maximize();
25
26         //load the URL
27         driver.get(URL);
28         //print current title
29         System.out.println(driver.getTitle());
30         //run JS to modify hidden element
31         ((JavascriptExecutor)driver).executeScript("document.getElementById(\"em\").type ='text';");
32         Thread.sleep(3000);
33         //run JS and add a alert
34         ((JavascriptExecutor)driver).executeScript("alert(\"hello,this is a alert!\");value=\"Alert\"");
35
36         //wait for 3 seconds
37          Thread.sleep(3000);
38
39
40           //create a alert instance
41           Alert alert1=driver.switchTo().alert();
42           //print alert text
43           System.out.println(alert1.getText());
44           //click accept button
45           alert1.accept();
46
47             //create elements
48             WebElement we=driver.findElement(By.id("fn"));
49             WebElement su=driver.findElement(By.id("su"));
50             WebElement em=driver.findElement(By.id("em"));
51             // input something
52             we.sendKeys("username  test");
53             Thread.sleep(3000);
54             //print email tagname
55             System.out.print("Email  isDislayed="+em.isDisplayed()+"\n");
56             Thread.sleep(3000);
57             //click submit button
58             su.click();
59             Thread.sleep(3000);
60
61             Alert alert=driver.switchTo().alert();
62             System.out.print( alert.getText());
63             alert.accept();
64
65             Thread.sleep(3000);
66
67             //close web browser
68             driver.quit();
69
70     }
71
72 }


 可以通过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!!

最新内容请见作者的GitHub页:http://qaseven.github.io/

相关文章
|
5天前
|
Web App开发 JavaScript 前端开发
《手把手教你》系列技巧篇(三十九)-java+ selenium自动化测试-JavaScript的调用执行-上篇(详解教程)
【5月更文挑战第3天】本文介绍了如何在Web自动化测试中使用JavaScript执行器(JavascriptExecutor)来完成Selenium API无法处理的任务。首先,需要将WebDriver转换为JavascriptExecutor对象,然后通过executeScript方法执行JavaScript代码。示例用法包括设置JS代码字符串并调用executeScript。文章提供了两个实战场景:一是当时间插件限制输入时,用JS去除元素的readonly属性;二是处理需滚动才能显示的元素,利用JS滚动页面。还给出了一个滚动到底部的代码示例,并提供了详细步骤和解释。
28 10
|
3天前
|
前端开发
【Web前端】CSS基本语法规范和引入方式&&常见选择器用法&&常见元素属性
【Web前端】CSS基本语法规范和引入方式&&常见选择器用法&&常见元素属性
|
4天前
|
JavaScript 前端开发 Java
《手把手教你》系列技巧篇(四十)-java+ selenium自动化测试-JavaScript的调用执行-下篇(详解教程)
【5月更文挑战第4天】本文介绍了如何使用JavaScriptExecutor在自动化测试中实现元素高亮显示。通过创建并执行JS代码,可以改变元素的样式,例如设置背景色和边框,以突出显示被操作的元素。文中提供了一个Java示例,展示了如何在Selenium中使用此方法,并附有代码截图和运行效果展示。该技术有助于跟踪和理解测试过程中的元素交互。
8 0
|
7天前
|
JavaScript
js多维数组去重并使具有相同属性的对象数量相加
js多维数组去重并使具有相同属性的对象数量相加
10 1
|
11天前
|
JavaScript 前端开发 C++
【Web 前端】JavaScript window.onload 事件和 jQuery ready 函数有何不同?
【5月更文挑战第2天】【Web 前端】JavaScript window.onload 事件和 jQuery ready 函数有何不同?
|
11天前
|
XML 前端开发 Oracle
16:JSP简介、注释与Scriptlet、Page指令元素、Include操作、内置对象、四种属性-Java Web
16:JSP简介、注释与Scriptlet、Page指令元素、Include操作、内置对象、四种属性-Java Web
13 2
|
12天前
|
JavaScript 前端开发 开发者
【Web 前端】什么是JS变量提升?
【5月更文挑战第1天】【Web 前端】什么是JS变量提升?
【Web 前端】什么是JS变量提升?
|
13天前
|
开发框架 JavaScript 前端开发
【JavaScript 与 TypeScript 技术专栏】TypeScript 在 Web 开发中的前沿应用
【4月更文挑战第30天】TypeScript在Web开发中日益重要,以其强大的类型系统提升代码质量,支持组件化开发,与React、Vue、Angular等框架良好集成。在大型项目管理中,TypeScript助于代码组织和优化,提高团队协作效率。此外,它提升开发体验,提供智能提示和错误检测。众多成功案例证明其前沿应用,未来将在Web开发领域持续发挥关键作用。
|
13天前
|
移动开发 JavaScript 前端开发
【JavaScript技术专栏】Web Worker在JavaScript中的应用
【4月更文挑战第30天】HTML5的Web Worker API解决了JavaScript单线程性能瓶颈问题,允许在后台线程运行JS代码。本文介绍了Web Worker的基本概念、类型、用法和应用场景,如复杂计算、图像处理和数据同步。通过实例展示了搜索建议、游戏开发和实时数据分析等应用,并提醒注意其无法直接访问DOM、需消息传递通信以及移动端资源管理。Web Worker为前端开发提供了多线程能力,提升了Web应用性能和用户体验。
|
14天前
|
JavaScript 前端开发 开发者
【Web 前端】JS模块化有哪些?
【4月更文挑战第22天】【Web 前端】JS模块化有哪些?