selenium經常使用的js總結

一、 對input執行輸入


 

直接設置value屬性, 此方法主要應對輸入框自動補全以及readonly屬性的element,sendkeys不穩定java

好比:dom

        //inputbox is a WebElement
        JavascriptExecutor js = (JavascriptExecutor) driver;
        js.executeScript("arguments[0].value=\"北京\"", from_inpox);

對此能夠封裝一個typeQuick的方法ui

/**
     * @author Young
     * @param locator
     * @param values
     * @throws Exception
     */
    protected void typeQuick(Locator locator, String values) throws Exception {
        WebElement e = findElement(driver, locator);
        log.info("type value is:  " + values);
        JavascriptExecutor js = (JavascriptExecutor) driver;
        js.executeScript("arguments[0].value=\""+values+"\"", e);

去掉只讀屬性this

   JavascriptExecutor js = (JavascriptExecutor) driver;
   js.executeScript("arguments[0].removeAttribute(\"+"readonly"+\")", e);

 

2.對富文本框的操做

主要應對富文本框,能夠封裝獲取富文本框內容和設置富文本路況內容的方法spa

JavascriptExecutor js = (JavascriptExecutor) driver;
        WebElement editor = driver.findElement(By.tagName("body"));
        js.executeScript(
                "arguments[0].innerHTML = '<h1>Selenium Test </h1>I love Selenium <br> this article Post By Selenium WebDriver<br><h2>Create By Young</h2>'",
                editor);

 設置富文本框內容code

    /**
     * @author Young
     * @param locator
     * @param text
     */
    protected void setRichTextBox(Locator locator, String text) {
        WebElement e = findElement(driver, locator);
        log.info("type value is:  " + text);
        JavascriptExecutor js = (JavascriptExecutor) driver;
        js.executeScript("arguments[0].innerHTML = \"" + text + "\"", e);
    }

獲取富文本框內容:blog

    /**
     * @author Young
     * @param locator
     * @param text
     * @return
     */
    protected String getRichTextBox(Locator locator, String text) {
        WebElement e = findElement(driver, locator);
        log.info("type value is:  " + text);
        JavascriptExecutor js = (JavascriptExecutor) driver;
        String result=(String) js.executeScript("var result=arguments[0].innerHTML;return result", e);
        return result;
    }

 


3. 滾動到指定位置

爲啥使用滾動? 由於若是頁面沒有徹底顯示,element若是是在下拉以後才能顯示出來,只能先滾動到該元素才能進行click,不然是不能click操做事件

JavascriptExecutor js=(JavascriptExecutor)driver;
        // roll down and keep the element to the center of browser
        js.executeScript("arguments[0].scrollIntoViewIfNeeded(true);", download);

 能夠封裝滾動到元素的方法的ip

 

/**
     * @author Young
     * @param locator
     */
    protected void scrollToElement(Locator locator) {
        WebElement e = findElement(driver, locator);
        log.info("scroll view element");
        JavascriptExecutor js = (JavascriptExecutor) driver;
        // roll down and keep the element to the center of browser
        js.executeScript("arguments[0].scrollIntoViewIfNeeded(true);", e);
    }

 


4. 觸發event,Dom event 事件的封裝element

    /**
     * For DOM Event 
     * @author Young
     * @param locator
     * @param event
     * please refer to: http://www.w3school.com.cn/jsref/dom_obj_event.asp
     * 
     */
    public void DOMEvent(Locator locator,String event)
    {
        JavascriptExecutor jse=((JavascriptExecutor)driver);
        String js="var event;if (document.createEvent){event = document.createEvent(\"HTMLEvents\");event.initEvent(\""+event+"\", true, false);arguments[0].dispatchEvent(event);} else {arguments[0].fireEvent(\"on"+event+"\")}";
        jse.executeScript(js, findElement(driver,locator)) ;
    }

 


5、獲取元素屬性

window.getComputedStyle(document.getElementById("su"),null).getPropertyValue("background")

 

六 、獲取頁面加載狀態

document.readyState
相關文章
相關標籤/搜索