2014-01-05 61 views
16

我無法使用Web驅動程序在我的應用程序中添加任何值。 我的應用程序正在使用幀。 使用下面的命令,我能夠清楚我的文本框 driver.findElement(By.name("name")).clear(); 的價值,但它不允許使用以下命令來把任何值: driver.findElement(By.name("name")).sendKeys("manish");sendkeys在Selenium Webdriver中不工作

即使點擊命令適用於按鈕在同一頁上。

請問我該怎麼做才能解決此問題。

在此先感謝。

+0

你確定你專注於正確的框架嗎? – Brian

+0

你會得到什麼錯誤?你能提供堆棧跟蹤嗎? – Amith

+0

是的我正在專注於正確的框架,否則我相信下面的命令不應該工作「driver.findElement(By.name(」name「))clear()」,在調試器模式下執行以下命令之前,我把一些值清楚通過使用這個,所以它應該關注正確的框架。而且令人驚訝的是,我在執行以下命令時沒有遇到任何錯誤 – user3162976

回答

2

嘗試在發送密鑰之前單擊文本框。

這可能是因爲你需要輸入之前觸發場上的事件,並希望點擊會做

+0

我們如何使用JavaScript進行點擊請sugggest – user3162976

+0

這對我來說不起作用 – user3162976

1

使用JavaScript來在字段中單擊然後使用的SendKeys()輸入值。 我在過去有一個類似的問題與框架。 Javascript是最好的方法。

+0

我怎樣才能使用JavaScript進行點擊。我會非常感謝,如果你能提供我的代碼 – user3162976

+1

我會說,Javascript永遠不應該「是最好的方式」。它應該只是最後的手段。使用JavaScript執行自動化實際上並不能證明應用程序正在通過用戶交互進行工作,但是如果您直接啓用JavaScript,則它可以工作。我總是會通過Selenium API嘗試很多其他想法,例如使用Actions將鼠標移動到字段上等(即通過交互觸發javascript,而不是執行) –

0

嘗試使用Javascript來sendkeys()。 JavaScript的執行者

WebElement element = driver.findElement(By.name("name")); 
JavascriptExecutor executor = (JavascriptExecutor)driver; 
executor.executeScript("arguments[0].click();", element); 

更多信息,可以發現@ JavascriptExecutor - Selenium

0

首先通過驅動控制使用幀----

driver.switchTo().frame("pass id/name/index/webelement"); 

後執行您想要做的操作webelement目前幀內 -

driver.findElement(By.name("name")).sendKeys("manish"); 
21

我也h廣告該問題以及之前。但後來我做的工作是

myInputElm.click(); 
myInputElm.clear(); 
myInputElm.sendKeys('myString'); 
+0

是的,我有一個理論來解釋它是什麼。我認爲我們這些受此影響的可能是因爲我們試圖發送密鑰的元素在一個框架中,也許這有助於硒得到它?謝謝! –

-2

通常我保持一個臨時變量。這應該工作。

var name = element(by.id('name')); 
name.clear(); 
name.sendKeys('anything'); 

希望它有幫助。

0

我已經走了同樣的問題,複製粘貼也不適用於該文本框。 下面代碼是我 -

WebDriver driver = new FirefoxDriver(); 
String mobNo = "99xxxxxxxx"; 
WebElement mobileElementIrs = 
driver.findElement(By.id("mobileNoPrimary")); 
mobileElementIrs.click(); 
mobileElementIrs.clear(); 
mobileElementIrs.sendKeys(mobNo); 
0

但是做工精緻點擊元素的作品對我來說,另一種解決方案,我發現是進入使用JavaScript,不需要該元素具有焦點值:

var _element= driver.FindElement(By.Id("e123")); 
IJavaScriptExecutor js = (IJavaScriptExecutor)driver; 
js.ExecuteScript("arguments[0].setAttribute('value', 'textBoxValue')", _element); 
0

我也有類似的問題太多,當我用

getDriver().findElement(By.id(idValue)).clear(); 
getDriver().findElement(By.id(idValue)).sendKeys(text); 

在「文本」的價值沒有completetelly寫入輸入,想象爲「Patrick「有時候寫」P「又是」帕特「,...所以測試失敗

我做了什麼來解決,這是一個解決方法,並使用JavaScript

((JavascriptExecutor)getDriver()).executeScript("$('#"+idValue+"').val('"+value+"');"); 

現在是罰款

而不是

driver.findElement(By.id("idValue")).sendKeys("text"); 

使用,

((JavascriptExecutor)getDriver()).executeScript("$('#"+"idValue"+"').val('"+"text"+"');"); 

This爲我工作。

相關問題