zoukankan      html  css  js  c++  java
  • WebDriver中执行JavaScript

    首先,我们使用如下方式初始化driver:

    1     WebDriver driver = new FirefoxDriver();  
    2     JavascriptExecutor jse = (JavascriptExecutor)driver; 

    1.直接传入JavaScript代码

    可以直接给jse传入javascript代码:

    1  jse.executeScript("window.document.getElementById('jingshou').click()";  

    2.传入WebElement执行js:

    1     WebElement element = driver.findElement(By.id("jingshou"));  
    2     jse.executeScript("arguments[0].click();", element);  

    又或者:

    1     jse.executeScript("arguments[0].onclick=function(){alert('This is my alert!');}", element)  

    其中auguments[0]就代表element, 甚至我们可以传入更多的参数,比如

    1     WebElement div = driver.findElemnt(By.id("myDiv"));  
    2     jse.executeScript("arguments[0].setAttribute('style', arguments[1])", div, "height: 1000px");  

     通过执行以上代码,我们指定的DIV就新增(修改)了 style {height: 1000px}的属性


    在WebDriver中可以使用JavaScript,通地使用JavascriptExector对象

    首先要通过向下转型 JavascriptExecutor js = (JavascriptExecutor) driver; 转为JavascriptExector对象

    然后再调用executeScript()方法来执行JS。


    例:

    1. 打开Google首页

    2. 通过JS获取网页中的title  --- document.title

    3. 获得网页中链接的数量 ----var links = document.getElementsByTagName('A'); return links.length

    具体实现如下

     1     package com.example.tests;  
     2     import static org.junit.Assert.*;  
     3     import org.junit.*;  
     4     import org.openqa.selenium.*;  
     5     import org.openqa.selenium.ie.InternetExplorerDriver;  
     6       
     7     public class test {  
     8         @Test  
     9         public void testJavaScriptCalls() {  
    10             WebDriver driver = new InternetExplorerDriver();  
    11             driver.get("http://www.google.com.hk");  
    12             JavascriptExecutor js = (JavascriptExecutor) driver;  
    13             String title = (String) js.executeScript("return document.title");  
    14             assertEquals("Google", title);  
    15             long links = (Long) js.executeScript("var links = "  
    16                     + "document.getElementsByTagName('A'); "  
    17                     + "return links.length");  
    18             assertEquals(32, links);  
    19             driver.close();  
    20         }  
    21     }  

    从javaScript代码中返回数据,我们需要使用return关键字。基于返回值的类型,我们需要对 executeScript()方法进行转型。对于带小数点的值,使用Double类型,非小数值可以使用Long类型,布尔值可以使用Boolean类 型,如果返回的是HTML节点,可以使用 WebElement类型,文本值,可以使用String类型。如果返回的是对象列表,基于对象类型的任何值都可以。

  • 相关阅读:
    mysql复制那点事
    全排列问题
    56. Merge Interval
    2. Add Two Numbers
    20. Valid Parentheses
    121. Best Time to Buy and Sell Stock
    120. Triangle
    96. Unique Binary Search Trees
    91. Decode Ways
    72. Edit Distance
  • 原文地址:https://www.cnblogs.com/zhonglian/p/7295280.html
Copyright © 2011-2022 走看看