Ich benutze Selenium WebDriver, um zu versuchen, eine externe Javascript-Datei in das DOM einzufügen, anstatt das Ganze in executeScript zu schreiben.Wie lade ich eine JavaScript-Datei mit Selen in das DOM?
Es sieht so aus, als ob es den Knoten richtig in das DOM platziert, aber dann ignoriert es einfach die Quelle, d. H. Die Funktion auf der Quelle js-Datei läuft nicht.
Hier ist mein Code:
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;
public class Example {
public static void main(String[] args) {
WebDriver driver = new FirefoxDriver();
driver.get("http://google.com");
JavascriptExecutor js = (JavascriptExecutor) driver;
js.executeScript("document.getElementsByTagName('head')[0].innerHTML += '<script src=\"<PATH_TO_FILE>\" type=\"text/javascript\"></script>';");
}
}
Der Code der JavaScript-Datei
alert("hi Nate");
ich auf meinem localhost die js-Datei platziert haben, ist, ich bin Verknüpfung, rief ich sie Datei : ///, und ich habe es auf einem externen Server versucht. Kein Würfel.
Auch im Java-Teil versuchte ich, 'scr' + 'ipt' mit diesem Trick anzuhängen, aber es funktionierte immer noch nicht. Wenn ich das DOM mit dem inspect-Element von Firefox überprüfe, kann ich sehen, dass es den Skriptknoten richtig lädt, also bin ich ziemlich verwirrt.
Ich habe auch versucht, diese Lösung, die offenbar für eine andere Version von Selen hergestellt wurde (nicht WebDriver) und damit nicht im geringsten funktionierte: Load an external js file containing useful test functions in selenium
Ja, das tut es! Ich endete damit, dass ich eine Weile länger damit herumhantierte und ich glaube, dass das Problem nicht bei Selenium oder etwas ähnlichem lag, sondern bei meiner Verwendung von innerHTML, um das DOM anzuhängen, anstatt appendChild, wie in http://stackoverflow.com/questions/1197575/can-scripts-be-insert-with-innerhtml Hoffentlich wird diese Frage jemandem in der Zukunft helfen, weil ich kein funktionierendes Beispiel der Verwendung von Selen fand, um eine externe Javascript-Datei hinzuzufügen –
Netter Code Mann, aber in welchem Pfad sollte das sein? – estemendoza
@estemendoza Ich denke, es ist relativ, aber kann Root relativ sein wie '/ js/somescript.js' oder auf Ihrem lical Computer' file: // home/me/js/somescript.js' – HMR