Selenium Javascript执行 - JS XMLHttpRequest有"访问被拒绝。"错误

时间:2016-05-24 11:42:11

标签: javascript selenium-webdriver xmlhttprequest cors cross-domain

目前我正在使用Selenium WebDriver使用Java代码执行JavaScript文件。当我执行它时,我收到以下错误。

我尝试过像thisthisthis这样的方法。但是你们仍然没有运气帮助我。

以下是我的Selenium代码

import java.io.File;
import java.io.IOException;

import org.junit.AfterClass;
import org.junit.BeforeClass;
import org.junit.Test;
import org.openqa.selenium.By;
import org.openqa.selenium.JavascriptExecutor;
import org.openqa.selenium.WebDriver;
import org.openqa.selenium.WebElement;
import org.openqa.selenium.firefox.FirefoxDriver;
import org.openqa.selenium.ie.InternetExplorerDriver;
import org.openqa.selenium.support.ui.ExpectedConditions;
import org.openqa.selenium.support.ui.WebDriverWait;

import com.google.common.base.Charsets;
import com.google.common.io.Files;

public class Selenium_JavaScript_Test {

    private static WebDriver driver;

    @BeforeClass
    public static void setUp() {

        System.setProperty("webdriver.ie.driver", "D://WorkSpace//Driver//IEDriverServer.exe");
        driver = new InternetExplorerDriver();
        driver.manage().window().maximize();

        WebDriverWait wait = new WebDriverWait(driver, 30);

        driver.get("https://A Sample Test Site .com/");

        WebElement ele = driver.findElement(By.cssSelector("a.js-selected-navigation-item.nav-item.nav-item-personal"));

        // read script file
        try {
            wait.until(ExpectedConditions.elementToBeClickable(ele));

            Thread.sleep(3000);

            String workingDir = System.getProperty("user.dir") + "\\needful\\xmlhttp.js";
            System.out.println(workingDir);

            String fileContents = Files.toString(new File(workingDir), Charsets.UTF_8);
            JavascriptExecutor js = (JavascriptExecutor) driver;
            js.executeScript(fileContents);

        } catch (IOException e) {
            // TODO Auto-generated catch block
            e.printStackTrace();
        } catch (InterruptedException e) {
            // TODO Auto-generated catch block
            e.printStackTrace();
        }
    }

    @Test
    public void Testing() {
        System.out.println("testing");
    }

    @AfterClass
    public static void tearDown() {
        /*try {
            Thread.sleep(10000);
            driver.quit();
        } catch (InterruptedException e) {
            // TODO Auto-generated catch block
            e.printStackTrace();
        }*/
    }

}

以下是我的xmlhttp.js文件代码

 var xmlReq;
    if (window.XMLHttpRequest)
    {
        //code for IE7+, Firefox, Chrome, Opera, Safari
        xmlReq = new XMLHttpRequest();
    }
    else
    {   //code for IE6, IE5
        xmlReq = new ActiveXObject("Microsoft.XMLHTTP");
    }

    url = "Access-Control-Allow-Origin:http://maps.googleapis.com/maps/api/directions/xml?origin=Okkiyam+Thuraipakkam&destination=nellore";
    xmlReq.open("GET", url, true);
    xmlReq.setRequestHeader("Content-Type", "text/xml; charset=utf-8");
    xmlReq.send();

    xmlReq.onreadystatechange = function ()
    {  alert(xmlReq.readyState + " Statuscode= "+ xmlReq.status);
        if (xmlReq.readyState == 4 ) 
        {
            response = xmlReq.responseText;
              alert("response= "+xmlReq.responseText);
              //returnedXMLDoc = loadXMLString(response);
               var strFormIdXML = "";
                var parser = new DOMParser();
                xmlDoc = parser.parseFromString(response,"text/xml");
                strFormIdXML = xmlDoc.getElementsByTagName("distance");                                                            
                  var value1 = strFormIdXML[0].getElementsByTagName("value")[0].textContent;     
                  var value2 = strFormIdXML[0].getElementsByTagName("text")[0].textContent;    
                  alert("Distance value= "+value1);
                  alert("Distance text= "+value2)
               }
    };

现在我得到的回应是 This is the response im having

"访问被拒绝"在这一行 - xmlReq.open(" GET",url,true);

0 个答案:

没有答案