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/

时间: 2024-09-19 06:56:38

Selenium web driver 使用JS修改input属性的相关文章

js修改input的type属性及浏览器兼容问题探讨与解决_javascript技巧

js修改input的type属性有些限制.当input元素还未插入文档流之前,是可以修改它的值的,在ie和ff下都没问题.但如果input已经存在于页面,其type属性在ie下就成了只读属性了,不可以修改.在ff下仍是可读写属性. 今天遇到个问题,输入框有默认值"密码",但获得焦点时,"密码"两字会去掉,输入时直接变成"****"的password类型.很明显,一开始的时候,input的类型是text,后来变成了password类型.直观的思路是

js修改input的type属性问题探讨_javascript技巧

js修改input的type属性有些限制.当input元素还未插入文档流之前,是可以修改它的值的,在ie和ff下都没问题.但如果input已经存在于页面,其type属性在ie下就成了只读属性了,不可以修改.在ff下仍是可读写属性. 今天遇到个问题,输入框有默认值"密码",但获得焦点时,"密码"两字会去掉,输入时直接变成"****"的password类型.很明显,一开始的时候,input的类型是text,后来变成了password类型.直观的思路是

改写Selenium Web Driver Sample Code

用Selenium WebDriver做网页自动化测试已经不少时间,一直用的语言的Python,最近突然很想学习Java,于是自己搭了一个Eclipse+Selenium 2.32的开发环境. Sample代码有一段如下,不是很好理解, (new WebDriverWait(driver, 10)).until(new ExpectedCondition<Boolean>() { public Boolean apply(WebDriver d) { return d.getTitle().t

j2ee-js修改input hidden值的问题

问题描述 js修改input hidden值的问题 我是在提交表单的时候修改的 < input type="hidden" name="code1" id="hiddeninput" value=""> < input type="submit" onclick="return submitcheck()"> js代码 function submitcheck()

ie8下修改input的type属性报错的解决方法_javascript技巧

摘要: 现在有一个需求如图所示,当用户勾选显示明文复选框时,要以明文显示用户输入的密码,去掉勾选时要变回密文,刚开始想到的就是修改输入框的type来决定显示明文还是密文,使用jQuery的attr来做试验,测试结果是chrome,Firefox,ie9+都是好的,在ie8以下就会报错,查找了下原因,ie8中是不允许修改input的type属性,最终换了种思路实现. 当勾选显示明文时替换输入框为type="text",不勾选时在将输入框替换为type="password&quo

ios-移动端 web 不用用户点击input 通过js自动获取焦点弹出键盘,Android 不好用求解

问题描述 移动端 web 不用用户点击input 通过js自动获取焦点弹出键盘,Android 不好用求解 ios 用 js给input 一个focus就会自动弹出键盘,但是在Android 浏览器中不好用,求大神解决,小弟在线等 解决方案 请问您这个问题最终怎么解决的?769964834.希望能沟通一下.谢谢

Selenium2+python自动化25-js处理日历控件(修改readonly属性)

前言     日历控件是web网站上经常会遇到的一个场景,有些输入框是可以直接输入日期的,有些不能,以我们经常抢票的12306网站为例,详细讲解如何解决日历控件为readonly属性的问题.     基本思路:先用js去掉readonly属性,然后直接输入日期文本内容 一.日历控件     1.打开12306的车票查询界面,在出发日期输入框无法直接输入时间     2.常规思路是点开日历控件弹出框,从日历控件上点日期,这样操作比较烦躁,并且我们测试的重点不在日历控件上,只是想输入个时间,做下一步

js-在foreach标签中修改style属性

问题描述 在foreach标签中修改style属性 代码: html <body onload="test();"> <form name="f1" method="post" action=""> <c:forEach items="${list}" varStatus="state" var="dto"> <input s

web开发常用js功能性小技巧

js|web|技巧 web开发常用js功能性小技巧 -------------------------------------------------------------------------------- <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0 Transitional//EN">; <HTML>; <HEAD>; <TITLE>; New Document </TITLE&g