2017-07-18 30 views
0

我正在處理單擊以打開輸入框的搜索輸入框圖標。由於圖標隱藏我用JavaScriptExecutor點擊它,打開搜索輸入,像如何使用selenium JavascriptExecutor將文本發送到ID不明的隱藏文本字段

WebElement searchBtn = driver.findElement(By.className("search-toggle")); 
JavascriptExecutor executor = (JavascriptExecutor) driver; 
executor.executeScript ("arguments[0].click();" , searchBtn); 

但現在,我需要輸入一些文本輸入和Enter鍵提交。該解決方案將是再次使用JavascriptExecutor,像

JavascriptExecutor jse = (JavascriptExecutor) driver; 
jse.executeScript("document.getElementById(**'gbqfq'**).value = 'search text';"); 

這一次,elementId「gbqfq」是未已知的,對不對?我該如何解決這個問題?

+1

請花點時間閱讀:https://stackoverflow.com/help/mcve如果不知道您正在使用的呈現的HTML,則無法回答此問題。 –

+1

爲什麼你需要發送文本到一個隱藏的元素?用戶不能與隱藏的元素進行交互。通過網站上的手動步驟完成您的任務,然後自動執行您手動執行的操作。 – JeffC

回答

1

如果您沒有該id,則使用另一個選擇器(如By.Class或By.Xpath)在selenium中查找元素,並使用SendKeys設置文本或使用.querySelector的等效JavaScript方法來查找元素並使用要設置文本的值屬性。

+0

感謝您的回覆。 如果您看到我在頂部給出的示例代碼,它是我需要遵循 「document.getElementById(**'gbqfq'**)value ='搜索文本';」), 而不是Selenium/Java一個。 – pranuta99

+0

@ pranuta99這個答案確實解決了你想要的語法,除非我失去了一些東西......'jse.executeScript(「document.querySelector(」。your> .css> .selector).value ='search text';「) ' – mrfreester

+0

你說的ID是未知的,所以你有三個選擇:1)解析ID,但爲了解析ID,你需要首先找到其他選擇器的按鈕,如果是這種情況,你可以點擊它直接找到它; 2)通過一些像name這樣的獨特屬性找到它,但是你需要一個索引,所以這相當於lat選項。3)通過xpath或css選擇器查​​找元素。 –

相關問題