在html5上的selenium中拖放测试(使用java)

时间:2015-11-21 21:56:30

标签: javascript java jquery html5 selenium

这是我的第一个问题所以请点亮我。我正在尝试使用selenium和java作为我的主要语言来测试HTML5上的拖放功能。但是我完全清楚selenium webdriver本身并不支持它,但是在stackoverflow论坛上有一个解决方法,用户使用javsacript文件来模拟拖放动作。

该JavaScript解决方法的链接是HERE

我试图按照说明操作,但由于我对编码很陌生,所以我浪费时间搞乱。但是,我已经尽了最大努力,但现在我遇到了加载脚本的问题。感谢。

(原来我没有正确执行drop.js脚本。工作代码如下:)

import java.io.BufferedReader;
import java.io.FileInputStream;
import java.io.FileReader;
import java.io.IOException;
import java.io.InputStreamReader;
import java.io.Reader;
import java.nio.charset.Charset;
import java.util.concurrent.TimeUnit;

import org.openqa.selenium.JavascriptExecutor;
import org.openqa.selenium.WebDriver;
import org.openqa.selenium.firefox.FirefoxDriver;

public class check {
    public static void main(String[] args) throws InterruptedException, IOException {

        System.setProperty("webdriver.Firefox.driver", "Path_executable");
        WebDriver driver= new FirefoxDriver();
        driver.get("http://html5demos.com/drag#");


        final String JQUERY_LOAD_SCRIPT = ("C:\\jQuerify.js");
        String jQueryLoader = readFile(JQUERY_LOAD_SCRIPT);
        driver.manage().timeouts().setScriptTimeout(10, TimeUnit.SECONDS);
        JavascriptExecutor js = (JavascriptExecutor) driver;
        js.executeAsyncScript(
                jQueryLoader /* , http://localhost:8080/jquery-1.7.2.js */);

        // ready to rock
        js.executeScript("jQuery(function($) { " + " $('input[name=\"q\"]').val('bada-bing').closest('form').submit(); "
                + " }); ");



      String filePath = "C://drop.js";
      String source = "#one";
      String target = "#bin";
      StringBuffer buffer = new StringBuffer();
      String line;
      BufferedReader br = new BufferedReader(new FileReader(filePath));
      while((line = br.readLine())!=null)
          buffer.append(line);

      String javaScript = buffer.toString();

      javaScript = javaScript + "$('" + source + "').simulateDragDrop({ dropTarget: '" + target + "'});";
      ((JavascriptExecutor)driver).executeScript(javaScript);

}

    private static String readFile(String file) throws IOException {
        Charset cs = Charset.forName("UTF-8");
        FileInputStream stream = new FileInputStream(file);
        try {
            Reader reader = new BufferedReader(new InputStreamReader(stream, cs));
            StringBuilder builder = new StringBuilder();
            char[] buffer = new char[8192];
            int read;
            while ((read = reader.read(buffer, 0, buffer.length)) > 0) {
                builder.append(buffer, 0, read);
            }
            return builder.toString();
        } finally {
            stream.close();
        }
    }
}

我的代码是: -

import java.io.BufferedReader;
import java.io.FileInputStream;
import java.io.IOException;
import java.io.InputStreamReader;
import java.io.Reader;
import java.nio.charset.Charset;
import java.util.concurrent.TimeUnit;

import javax.script.ScriptException;

import org.openqa.selenium.JavascriptExecutor;
import org.openqa.selenium.WebDriver;
import org.openqa.selenium.firefox.FirefoxDriver;

public class drag {

    public static void main(String[] args) throws ScriptException, NoSuchMethodException, IOException {
        System.setProperty("webdriver.Firefox.driver", "Address_Executable");
        WebDriver driver = new FirefoxDriver();
        driver.get("http://html5demos.com/drag");

        final String JQUERY_LOAD_SCRIPT = ("C:\\jQuerify.js");
        String jQueryLoader = readFile(JQUERY_LOAD_SCRIPT);
        driver.manage().timeouts().setScriptTimeout(10, TimeUnit.SECONDS);
        JavascriptExecutor js = (JavascriptExecutor) driver;
        js.executeAsyncScript(
                jQueryLoader /* , http://localhost:8080/jquery-1.7.2.js */);

        // ready to rock
        js.executeScript("jQuery(function($) { " + " $('input[name=\"q\"]').val('bada-bing').closest('form').submit(); "
                + " }); ");

        final String DROP = ("C:\\drop.js");
        String scriptLoader = readFile(DROP);
        driver.manage().timeouts().setScriptTimeout(10, TimeUnit.SECONDS);
        JavascriptExecutor js1 = (JavascriptExecutor) driver;
        js1.executeScript(
                scriptLoader /* , http://localhost:8080/jquery-1.7.2.js */);
        ((JavascriptExecutor) driver).executeScript(js1 + "$('#one').simulateDragDrop({ dropTarget: '#bin'});");

    }

    private static String readFile(String file) throws IOException {
        Charset cs = Charset.forName("UTF-8");
        FileInputStream stream = new FileInputStream(file);
        try {
            Reader reader = new BufferedReader(new InputStreamReader(stream, cs));
            StringBuilder builder = new StringBuilder();
            char[] buffer = new char[8192];
            int read;
            while ((read = reader.read(buffer, 0, buffer.length)) > 0) {
                builder.append(buffer, 0, read);
            }
            return builder.toString();
        } finally {
            stream.close();
        }
    }

}

0 个答案:

没有答案