2012-09-12 80 views
0

如何在地球上我得到這個Javascript方法硒的webdriver和JavaScript改變

$('#principal_uid').change(function() { 
if($(this).val().length > 0){ 
window.location.href = "/switch.html" + "?uid=" + $(this).val(); 
    } else { 
    window.location.href = "/index.html"; 

要與我的硒WebDdriver測試中,我試圖改變字段的值工作? 問題是該字段具有默認值,但Selenium clear() - 方法不會清除它,儘管測試正在通過。

我試過的東西

WebElement field =driver.findElement(By.id("principal_uid")); 
JavascriptExecutor js = (JavascriptExecutor) driver; 
js.executeScript("$('#principal_uid').change"); 
field.clear(); 


field.sendKeys("newValue"+Keys.RETURN); //CHRASHED THE TEST WITH ERROR COMMUNICATING REMOTE SERVER ERROR 
+0

你確定它不會崩潰這裏'js.executeScript(「$(‘#principal_uid’)改變「);'?該代碼有錯誤。 –

+0

其實,這個javascript是完全有效的語法,不會引發任何錯誤。它不會*做*任何事情,絕對不是有意的,但是有效的。 – lacy

回答

0

嘗試是這樣的:

js.executeScript("$('#principal_uid').val('%s')".format("newValue")); 

這應該觸發「的onchange」事件,並在代碼中描述您重定向到該頁面。

如果事件沒有被觸發(儘管它應該是)你可以添加:

js.executeScript("$('#principal_uid').trigger('change')") 
+0

我會推薦使用'triggerHandler()',因爲它更安全,更適合這種情況。閱讀[這裏](http://davidwalsh.name/dont-trigger-real-event-names)。 – lacy