zoukankan      html  css  js  c++  java
  • selenium常用的js总结

    1、 对input执行输入


    直接设置value属性, 此方法主要应对输入框自动补全以及readonly属性的element,sendkeys不稳定

    比如:

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

    对此可以封装一个typeQuick的方法

    /**
         * @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);

    去掉只读属性

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

    2.对富文本框的操作

    主要应对富文本框,可以封装获取富文本框内容和设置富文本路况内容的方法

    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);

     设置富文本框内容

        /**
         * @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);
        }

    获取富文本框内容:

        /**
         * @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);
    

     可以封装滚动到元素的方法的

     

    /**
         * @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 事件的封装

        /**
         * 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)) ;
        }

    五、获取元素属性

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

    六 、获取页面加载状态

    document.readyState
  • 相关阅读:
    Aizu:0189-Convenient Location
    POJ:3262-Protecting the Flowers
    POJ:1862-Stripies
    POJ:3040-Allowance(贪心好题)
    模态
    实时错误 '91' :对象变量或with块变量未设置
    archlinux的安装与简单配置(长期更新)
    [置顶] css 背景透明,文字不透明,alpha滤镜,opacity,position:relative;
    交叉编译:cannot find /lib/libc.so.6 collect2: ld returned 1 exit status
    hdu 2460 poj 3694 (双联通+LCA)
  • 原文地址:https://www.cnblogs.com/tobecrazy/p/4817946.html
Copyright © 2011-2022 走看看