51Testing软件测试论坛

 找回密码
 (注-册)加入51Testing

QQ登录

只需一步,快速开始

微信登录,快人一步

手机号码,快捷登录

查看: 1385|回复: 1
打印 上一主题 下一主题

【转帖】WebDriver拾级而上(13) – 调用Java Script

[复制链接]

该用户从未签到

跳转到指定楼层
1#
发表于 2017-7-14 11:51:35 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式

在用selenium 1.X的时候常常会用到geteval_r()方法来执行一段js脚本来对页面进行处理。
当然selenium webdriver也提供这样的一个方法:JavascriptExecutor.executeScript(string)
例如:
CODE:
  1. <font size="4">import org.openqa.selenium.JavascriptExecutor;
  2. import org.openqa.selenium.WebDriver;

  3. public class  SimpleExample {   
  4.     public static void main(String[] args) {
  5.         ChromeDriver driver = new ChromeDriver();
  6.         driver.executeAsyncScript("arguments[0](); alert('Hello')");
  7.         try {
  8.             Thread.sleep(3000);
  9.         } catch (InterruptedException e) {
  10.             e.printStackTrace();
  11.         }
  12.         driver.switchTo().alert().accept();
  13.     }
  14. }</font>
复制代码

上面是一个最简单的例子,打开一个浏览器,然后弹层一个alert框。注意这里的driver要被强制转换成JavascriptExecutor。
下面演示在打开51.com首页如何得到帐号输入框中显示的字符,并打印输出。
CODE:
  1. <font size="4"><div class='input_wrap'>
  2. <input id="passport_51_user" type="test" value="" tabindex="1" title="用户名/彩虹号/邮箱" name="passport_51_user" style="color:rgb(0,0,0);">
  3. </div></font>
复制代码

CODE:
  1. <font size="4">package com.test;

  2. import org.openqa.selenium.JavascriptExecutor;
  3. import org.openqa.selenium.WebDriver;
  4. import org.openqa.selenium.chrome.ChromeDriver;

  5. public class Test_JsExecutor {
  6.     public static void main(String[] args) {
  7.         String url = "http://www.51.com";
  8.          
  9.         //打开chrome
  10.         WebDriver dr = new ChromeDriver();
  11.         String js = "var user_input = document.getElementByIdx_x_x_x(\"passport_51_user\").title;return user_input;";
  12.         String title = (String)((JavascriptExecutor)dr).executeScript(js);
  13.         System.out.println(title);

  14.         dr.quit();
  15.     }
  16. }</font>
复制代码

输出结果为:
CODE:
  1. <font size="4">用户名/彩虹号/邮箱</font>
复制代码

其他用例:
CODE:
  1. <font size="4">JavascriptExecutor js = (JavascriptExecutor) driver;
  2. js.executeScript("(function(){
  3.                                 inventoryGridMgr.setTableFieldValue('"+ inventoryId + "','" + fieldName + "','"+ value + "');
  4.                             }
  5.                   )()"
  6.                 );</font>
复制代码


本帖子中包含更多资源

您需要 登录 才可以下载或查看,没有帐号?(注-册)加入51Testing

x
分享到:  QQ好友和群QQ好友和群 QQ空间QQ空间 腾讯微博腾讯微博 腾讯朋友腾讯朋友
收藏收藏1
回复

使用道具 举报

该用户从未签到

2#
发表于 2017-7-14 15:12:50 | 只看该作者
给楼主点赞
回复 支持 反对

使用道具 举报

本版积分规则

关闭

站长推荐上一条 /1 下一条

小黑屋|手机版|Archiver|51Testing软件测试网 ( 沪ICP备05003035号 关于我们

GMT+8, 2024-11-26 16:37 , Processed in 0.060916 second(s), 23 queries .

Powered by Discuz! X3.2

© 2001-2024 Comsenz Inc.

快速回复 返回顶部 返回列表