2015-04-03 158 views
0

我試圖單擊隱藏的搜索按鈕。 我試過一些方法,但它沒有工作:元素隱藏selemium webdriver錯誤「元素當前不可見,因此可能不會互動」

<form id="form1" name="viewClient" method="post" action="ClientMgmtServlet" abframeid="iframe.0.10752026348407184" abineguid="027BBB6AD3324EFDA3FED3803F068951"> 
<input type="hidden" value="U7dPiPXFQhCDtDaTHAVH" name="preventionflag"/> 
<input id="searchClientBtn" type="hidden" value="Search" name="searchClientBtn"/> 

我用這個方法:

//Enter client ID 
String userid = prop.getProperty(CLIENTID); 
driver.findElement(By.id("clientId")).sendKeys(userid); 

//Enter client name 
String clientName = prop.getProperty(CLIENTNAME); 
driver.findElement(By.id("clientName")).sendKeys(clientName); 

//enter Mobile No 
String mobile_no = prop.getProperty(MOBILE_NO); 
driver.findElement(By.id("mobileNo")).sendKeys(mobile_no); 
WebElement elem = driver.findElement(By.xpath(".//*[@id='searchClientBtn']")); 
String js = "arguments[0].style.height='auto'; arguments[0].style.visibility='visible';"; 

((JavascriptExecutor) driver).executeScript(js, elem); 

有人點擊搜索按鈕,但我已經在字段中輸入的數據不接受。它的工作原理就像我沒有輸入數據。這向我展示了搜索中的所有用戶。

有人可以幫我解決這個問題嗎?

+0

你有沒有添加任何明確的等待按鈕變得可點擊? – LittlePanda 2015-04-03 16:31:10

+0

@LittlePanda我確實嘗試了隱含的等待,沒有嘗試明確地等待。 – avisek 2015-04-04 11:35:28

回答

0

id爲searchClientBtn的輸入元素是一個隱藏字段。你不能在普通瀏覽器中與它進行交互。由於Selenium只是開着瀏覽器,它不會讓你做在正常瀏覽器中無法做的事情。

這是正常行爲,您不能更改它。

要提交表單,可以在該表單的任何可見輸入字段上調用click()方法。您也可以獲取表單元素並單擊()。

+0

可以解釋我與代碼如何做到這一點。這將是很大的幫助。 – avisek 2015-04-04 11:42:01

1

您可以檢查此 - How to click on hidden element in Selenium WebDriver?

而且它不使用XPath查找元素,如果你可以改變它是個好主意。

請注意,某些版本的瀏覽器(我認爲 - FF 34.xx.x,35.xx.x)在執行js時出現了這個奇怪的問題。

+1

'用xpath尋找元素不是個好主意' - 我不會給出這樣的建議。這沒有意義。請解釋。 – alecxe 2015-04-03 16:40:27

+0

@АнтонийКунчев我沒有嘗試完全一樣,但類似的東西..你可以在我的代碼中看到。在最後一部分。但它沒有幫助。 – avisek 2015-04-04 11:40:25

+0

請詳細說明爲什麼我們不應該使用Xpath – 2015-04-05 11:23:46

0

由於@Stefaan Neyts解釋嘗試提交表單。填寫表格中的所有細節後,請嘗試下面的代碼。

driver.findElement(By.id("clientName")).submit(); 
0

我發現了我遇到的問題。我有兩個具有相同ID「searchClientBtn」的元素。 所以我用這個driver.findElement(By.xpath("(.//*[@id='searchClientBtn'])[2]")).click(); 這讓我讀了第二個沒有隱藏的元素,它解決了我的問題。 感謝大家。

相關問題