2015-09-20 50 views
1

我有2個網站,我想自動化搜索過程,我很努力尋找一種方法來定位和填充元素和加快過程(因爲我使用這些網站每天多次): http://pretraga2.apr.gov.rs/ObjedinjenePretrage/Search/Search http://www.nbs.rs/internet/english/67/rir.htmlJava - 硒(鉻驅動程序)元素不可見的例外

我幾乎嘗試了一切,並設法找到文本字段「Матичниброј:」第一個網站,而是試圖填補它,當我得到元素不可見例外。 第二個網站我試圖觸發JavaScript,但它打開窗口在新窗口中搜索,搜索不能從那裏。

希望有人會提出一些解決方案,在此先感謝。

+0

您如何識別元素?可能您使用的選擇器不正確 – Saifur

+0

歡迎來到Stack Overflow!請閱讀指南[我如何提出一個好問題](http://stackoverflow.com/help/how-to-ask),尤其是關於最小,完整和可驗證示例(MCVE)的部分。這將幫助你爲自己解決問題。如果你這樣做,仍然卡住,你可以回來發佈你的MCVE,你試過的,以及結果是什麼,所以我們可以更好地幫助你。 – JeffC

回答

2

恰好有兩個元素具有相同的id和名稱。如果你仔細調查,你會看到第二個元素是你想要的。

td.apr-mbr>[name='SearchByRegistryCodeString'] 

編輯:

此代碼適用於第一個鏈接就好了。

WebElement element = driver.findElement(By.cssSelector("td.apr-mbr>[name='SearchByRegistryCodeString']")); 
     element.sendKeys("Test"); 

enter image description here

+0

感謝您的答案,我已找到它,但是當我嘗試將密鑰發送給它時,它給了我元素不可見的例外..我可以發佈我使用的代碼... 編輯: 列表 frameList =驅動程序。 findElements(By.className( 「SearchTable」)); WebElement a = frameList.get(1); 列表 st1 = a.findElements(By.className(「apr-mbr」)); WebElement test11 = st1.get(1); WebElement testuno = test11.findElement(By.xpath(「// input」)); System.out.println(testuno.getAttribute(「id」)); 和id匹配我檢查的人,但仍然無法訪問該框.. – milorads

+0

@ b02您正在做太多不必要的工作。看到我的編輯 – Saifur

+0

感謝一羣夥伴,你讓它變得如此簡單,我想我需要查找更多的CSS選擇器和xpaths,使它比我使用的要容易得多:) 我應該使用類似的解決方案來第二個網站? – milorads

0

這也可以偶爾當元素是無需滾動不可見的發生(但我完全不知道爲什麼,雖然在我的案件的元素不會是隱藏的)我找到了解決辦法是在調用所需操作之前將焦點移至元素(click,sendKeys等)

Actions actions = new Actions(driver); 
actions.moveToElement(webElement).perform();