【java+selenium3】JavaScript的調用執行 (十)


JavaScript的調用

  在web自動化操作頁面的時候,有些特殊的情況selenium的api無法完成,需要通過執行一段js來實現的DOM操作;

//執行方式
JavascriptExecutor jsExecutor = (JavascriptExecutor) driver;
jsExecutor.executeScript("js代碼");

例如:

1.時間插件限制手動輸入的情況下,sendkeys無法寫入數據,需要執行js來移除readonly屬性!

   詳細參考博客:時間控件的處理

2.有些頁面元素需要拉動滾動條才能獲取到(因為拉取滾動條才加載),而selenium和webdriver都沒有提供操作滾動條的方法,只能借助js來完成!

//執行方式
JavascriptExecutor jsExecutor = (JavascriptExecutor) driver;
String js = "document.body.scrollTop=200";
jsExecutor.executeScript(js);//執行js

興趣擴展:實現滾動條勻速向下滾動代碼

package cn.test;

import org.openqa.selenium.JavascriptExecutor;
import org.openqa.selenium.WebDriver;
import org.openqa.selenium.chrome.ChromeDriver;
import org.openqa.selenium.firefox.FirefoxDriver;
import org.openqa.selenium.ie.InternetExplorerDriver;

public class Test {
    public static void main(String[] args) {
        System.setProperty("webdriver.chrome.driver", "src/test/resources/chromedriver.exe");
        WebDriver driver =new ChromeDriver();
        try {
            driver.get("https://www.12306.cn/index/");
            driver.manage().window().maximize();
            Thread.sleep(5000);
            //執行方式
            JavascriptExecutor jsExecutor = (JavascriptExecutor) driver;
//                String js = "document.documentElement.scrollTop=200"; 
            String js = null;
            for (int i = 0; i < driver.manage().window().getSize().height*2; i=i+3) {
                if(driver instanceof ChromeDriver) {
                    js = "document.body.scrollTop="+i;
                }else if(driver instanceof FirefoxDriver) {
                    js = "document.documentElement.scrollTop="+i;
                }else if(driver instanceof InternetExplorerDriver) {
                    js = "document.documentElement.scrollTop="+i;
                }
                jsExecutor.executeScript(js);//執行js
            }
            Thread.sleep(5000);
        } catch (Exception e) {
            e.printStackTrace();
        }finally {
            System.out.println("執行結束,關閉瀏覽器!");
            driver.quit();
        }
    }
}

學習后總結,不足之處后續補充。。。

未完待續、、、

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM