Исполнитель JavaScript в Selenium WebDriver

Я хочу использовать JavaScript для своего сценария.

Я создал object из JavaScriptExecutor, но метод executeScript() отсутствует. Он показывает ошибку, когда я использую метод executeScript().

Это код, который я использовал:

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


public class GetDomain_JS {

    public static void main(String[] args) {
        WebDriver driver=new FirefoxDriver();
        driver.get("http://only-testing-blog.blogspot.in/2013/11/new-test.html");
        driver.manage().window().maximize();

        System.out.println(driver.getCurrentUrl());

        JavaScriptExecutor js=(JavaScriptExecutor) driver;

        String domain_name=(String) js.executeScript("return document.domain");

                System.out.println(doamin_name);

    }
}

person Ramarajan    schedule 07.06.2014    source источник
comment
Я должен использовать JavascriptExecutor вместо JavaScriptExecutor.   -  person Ramarajan    schedule 08.06.2014


Ответы (4)


Меня устраивает; у вас была ошибка в JavaScriptExecutor с заглавными буквами S. Вместо этого у вас должно быть javascriptExecutor со строчными буквами s.

Попробуйте этот код:

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


public class GetDomain_JS {

public static void main(String[] args) {
    WebDriver driver=new FirefoxDriver();
    driver.get("http://only-testing-blog.blogspot.in/2013/11/new-test.html");
    driver.manage().window().maximize();

    System.out.println(driver.getCurrentUrl());

    JavascriptExecutor js=(JavascriptExecutor) driver;

    String domain_name=(String) js.executeScript("return document.domain");

            System.out.println(domain_name);

}
}

Это работает для меня!! Пожалуйста, стучите, если это для вас!

person pelican    schedule 08.06.2014
comment
В чем разница? Исправил опечатку в System.out.println(doamin_name);? - person olyv; 08.06.2014
comment
Теперь он работает. Ошибка: я создал экземпляр JavaScriptExecutor, JavascriptExecutor (строчная буква S) является правильным. - person Ramarajan; 08.06.2014
comment
Драйвер JavascriptExecutor js=(JavascriptExecutor); Я не понял эту строку, JavascriptExecutor — это интерфейс, поэтому мы приводим объект драйвера к JavascriptExecutor?? - person Lokesh Sanapalli; 20.04.2016

Убедитесь, что вы импортировали правильный пакет.

Ожидаемый пакет для работы с Java Script:

import org.openqa.selenium.JavascriptExecutor;

Попробуйте этот пакет. Это должно решить вашу ошибку.

person Praveen    schedule 07.06.2014

Объяснение:

Добавьте последнюю банку (я использую банку 3.0 beta selenium). Импорт пакета библиотеки Javascript. Возьмите объект веб-драйвера, приведя его к JavascriptExecutor, и запустите любой java-скрипт, который вы хотите запустить.

Код:

import com.thoughtworks.selenium.webdriven.JavascriptLibrary;
Object ob = ((JavascriptExecutor) webDriver()).executeScript("return document.domain").toString();
System.out.println(ob);
person Jitesh Sojitra    schedule 03.09.2016
comment
Ваш ответ, безусловно, заслуживает небольшого пояснения. Это добавит доступный для поиска контент, чтобы другие пользователи могли найти его и извлечь выгоду из нашей работы. - person J. Chomel; 03.09.2016
comment
Согласен, я думал, что есть много ответов, поэтому все плохо представляют, что говорит код. Добавил еще немного информации. - person Jitesh Sojitra; 03.09.2016

Вы можете вернуть объект из executeScript. Позже вы можете получить текст из него.

Object domain_name = js.executeScript("return document.domain");

System.out.println(domain_name.toString());

Таким образом, вы можете возвращать значения любого типа, а не только строку.

person Purus    schedule 08.06.2014