2017-08-21 65 views
-1

我以selenium webdriver開頭。 我想做一個簡單的例子,並在網上尋找下一個按鈕: www.lot.com/pl/en。如何在selenium webdriver中搜索findElementBy.id

WebDriver driver = new FirefoxDriver(); 
String web = "https://www.lot.com/pl/en/"; 
driver.get(web); 

try{ 
    driver.findElement(By.id("submit-booker")); 
    System.out.println("FOUND"); 
}catch (Exception e){ 
    System.out.println("NOT FOUND"); 
    e.printStackTrace(); 
} 

但我無法得到它的做工精細 ,給我以下錯誤:

org.openqa.selenium.NoSuchElementException: Unable to locate element: #submit-booker

我在做什麼錯? 我該如何解決它?

+0

在找到元素之前請稍等。 –

+0

我已添加WebDriverWait等待=新的WebDriverWait(驅動程序,20);在嘗試之前,但它不工作 – mvillegas

+0

設置隱式等待'driver.manage()。timeouts()。implicitlyWait(10,TimeUnit.SECONDS);''driver.findElement(By.id(「submit-booker」 ));' –

回答

1

當你試圖click()Next按鈕,其中有一個span標籤可以考慮構建一個獨特xpath如下:

driver.findElement(By.xpath("//button[@id='submit-booker']/span")); 
+0

我把你的代碼,但同樣的錯誤:無法找到元素://按鈕[@ id ='submit-booker']/span – mvillegas

+0

如果'id'屬性存在,爲什麼你使用'xpath'定位器 –

1

有時webdriver的無法識別直接識別策略的元素。你需要在driver.findElement(By.xpath(「......」))方法的幫助下編寫一些xpath來標識元素。 你可以在這個鏈接找到更多關於編寫xPath的信息。

http://toolsqa.com/selenium-webdriver/choosing-effective-xpath/ 

如果您共享頁面的確切的html代碼,有人能幫助你發現的元素。

0

我也曾經遇到類似的問題,硒在過去沒有檢測到元素,並提到沒有顯示。如果您嘗試點擊按鈕,則可以使用JavaScript。

driver.executeScript("document.getElementById('submit-booker').click()") 

那麼它似乎是你試圖填寫表格並移動到搜索結果頁面來獲取價格。如果是這種情況,您可以通過構建url並直接打開它來簡化此任務。

https://bookerproxy.lot.com/service.php?COUNTRY_CODE=PL&LANGUAGE_CODE=en&ORIGIN=WAW&DESTINATION=VIE&DEPARTURE_DATE=07092017&ARRIVAL_DATE=11092017&ADULT_COUNT=1&SENIOR_COUNT=0&CHILD_COUNT=0&INFANT_COUNT=0&PARTNER=L76OK50SI42D&CLASS=E 

如果你看一下URL,它會給你只是「&」

+0

剛注意到「submit-booker」會擴大表格,你需要在填寫完成後提交。代碼爲 driver.executeScript(「document.getElementsByClassName('booker-column-3')[1] .children [0] .click()」) – Sanjoy

0

組隱像這個 -

driver.manage().timeouts().implicitlyWait(10, TimeUnit.SECONDS); 

前的等待後,填寫所需的字段
driver.findElement(By.id("submit-booker")); 
+0

你可以解釋你的代碼,爲什麼你把這個代碼'driver.manage()。timeouts()。implicitlyWait(10,TimeUnit.SECONDS);' –

+0

@JainishKapadia在打開頁面後,他正在尋找一個元素。這種隱含的等待將允許他等待直到頁面完全加載的時間。該等待將在驅動程序的生命週期之前可用。 –

+0

但是不要在這裏提供'隱含的等待',你應該用'明確的等待'去。 –

相關問題