2015-07-06 65 views
3

早上好, 我在java中使用命令sendKeys和SELENIUM庫有問題。selenium sendkeys不起作用

只有當您向下滾動才能看到文本字段時,窗口中才會顯示該文本字段。

var element = driver.FindElement(By.Xpath("…")); 
element.SendKeys("blah"); 

所以,當文本字段在窗口可見消息「blah」發送到文本字段元素沒有任何問題。

相反,當文本字段元素在窗口中不可見時,因爲我沒有向下滾動,所以不會將消息「blah」發送到文本字段。

我該如何解決這個問題? 我想發送消息「等等」給文本字段元素,當它沒有出現在窗口中。 我該怎麼做?

+2

您也可以向下滾動到含有硒的元素。 http://stackoverflow.com/questions/12293158/page-scroll-up-or-down-in-selenium-webdriver-selenium-2-using-java:P –

+0

@ user3868055您可以分享網頁鏈接或源代碼 – Vicky

+0

您無需向下滾動webdriver即可訪問元素。即使您沒有滾動到該元素,該元素也是「可見的」,只要它實際呈現給dom而不是在其他元素後面。 但是,如果您實際上必須滾動到頁面的該部分來顯示元素:http://stackoverflow.com/a/12293212/1994255 –

回答

0

使用executeScript將元素滾動到視圖中。

driver.executeScript("arguments[0].scrollIntoView();",element); 
element.sendKeys("blah"); 
0

可以使用Actions moveToElement方法做這樣的

公共行動的事情moveToElement(WebElement toElement)

移動鼠標 到元素的中間。該元素滾動到視圖中,並使用getBoundingClientRect計算其位置。

new Actions(driver).moveToElement(element).build().perform(); 
element.SendKeys("blah"); 
0

如果可以使用非標準的SendKeys方法不設置文本,你可以嘗試ExecuteScript(如果問題真的的SendKeys而不是在你的選擇=))。如下所示:

webdriver.executeScript("document.getElementById('elementID').setAttribute('value', 'new value for element')");