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

复制代码

  1. 滚动到指定位置
    为啥使用滚动? 因为如果页面没有完全显示,element如果是在下拉之后才能显示出来,只能先滚动到该元素才能进行click,否则是不能click操作

1
2
3
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);
}

复制代码

  1. 触发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