2013-03-13 71 views
1

有Silenium服務器,NUnit,WebDriver。ExecuteScript不執行HTML中描述的func,並在頁面加載後運行

我有C#DLL與下面的代碼:

private IWebDriver driver; 

// ... 

driver = new InternetExplorerDriver(); 

// ... 

[Test] 
public void test() 
{ 
    string testURL = "file:/C:/Tests/test.html"; 
    driver.Navigate().GoToUrl(testURL); 
    IJavaScriptExecutor js = driver as IJavaScriptExecutor; 
    object resFunc = js.ExecuteScript("open_form"); 
    object res = js.ExecuteAsyncScript("alert('hello')"); 
} 

文件test.html樣子:

<html> 
<head> 
    <title></title> 
    <meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1" /> 
    <script type="text/javascript" src="./test.js"></script> 
</head> 
<body unselectable="on"> 
</body> 
</html> 

而且test.js

function open_form() { 
    document.body.style.backgroundColor = "green"; 
} 

我運行控制檯NUnit的,當測試「你好「出現,背景顏色不變。 如何運行html內的函數以及哪些正在執行的操作?

回答

0

您錯過了括號。

讓它:

object resFunc = js.ExecuteScript("open_form()"); 

順便說一下,你做哪個,不實際上需要從這個函數中使用的返回值。

+0

非常感謝!這有助於運行腳本!但它仍然是要解決與爭論的問題。 所以當我將參數傳遞給函數並輸出警報時,參數傳遞爲undefined int dec = 10; string value =(string)js.ExecuteScript(「return open_form()」,new object [] {dec}); function open_form(val){ \t alert(val); \t return val; } – Alexey 2013-03-14 09:52:30