我使用Selenium WebDriver嘗試將外部JavaScript文件插入到DOM中,而不是將整個事件輸入到executeScript中。如何使用硒將JavaScript文件加載到DOM中?
看起來它正確地將節點放入DOM,但它只是忽略源,即所述源js文件上的函數不運行。
這裏是我的代碼:
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>';");
}
}
JavaScript文件,我鏈接的代碼是
alert("hi Nate");
我放置在我的本地的js文件,我把它叫做使用文件:///,我在外部服務器上試過。沒有骰子。
此外,在Java部分,我嘗試使用該技巧追加'scr'+'ipt',但它仍然無效。當我使用Firefox的inspect元素檢查DOM時,我可以看到它正確加載腳本節點,所以我很困惑。
我也試過這個解決方案,這顯然是爲硒(不webdriver的)的另一個版本製成,因此在毫釐不工作:Load an external js file containing useful test functions in selenium
是的!我最終弄亂了它一段時間,我相信這個問題不是用Selenium或類似的東西,而是用我使用innerHTML來追加DOM,而不是appendChild,按照http://stackoverflow.com/questions/1197575/can-scripts-be-inserted-with-innerhtml 希望這個問題可以幫助未來的人,因爲我從來沒有找到一個使用硒來添加外部javascript文件的工作示例 –
Nice code ,夥計,但這個js應該在哪條路上? – estemendoza
@estemendoza我想它是相對的,但可以像'/ js/somescript.js'或在你的計算機上的文件:file:// home/me/js/somescript.js – HMR