ตัวดำเนินการ 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) นำเข้าแพ็คเกจไลบรารี 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