2017-07-12 31 views
-1

嗨,我寫了這段代碼。現在的日期部分它按預期工作,但時間部分既沒有給出任何例外,也沒有打印時隙。Selenium處理使用java的列表

網址: - https://www.dineout.co.in/delhi/boa-village-civil-lines-north-delhi-21335

WebDriver driver; 
String datee=""; 
String t=""; 

public RDP(WebDriver ldriver){ 
    this.driver=ldriver; 
} 


@FindBy(how=How.XPATH,using="//input[@class='form-control']") 
WebElement Time_selector; 

@FindBy(how=How.XPATH,using="//*[@class='do do-calender-icon']") 
WebElement calender; 
public void logged_in_user_booking() throws InterruptedException 
{ 
    calender.click(); 
    Thread.sleep(4000); 
    List<WebElement> dates= driver.findElements(By.cssSelector("ul.days li")); 

    //System.out.println(dates); 
    for(int i=0 ;i<dates.size();i++) 
    { 
     datee = dates.get(i).getText(); 
     if(datee.equalsIgnoreCase("31")) 
     { 

      dates.get(i).click(); 
      break; 
     } 

    } 

    List<WebElement> time_slots = driver.findElements(By.cssSelector("div.timings-wrap ul li")); 
    for(int j=0 ;j<time_slots.size();j++) 
    { 
     t = time_slots.get(j).getText(); 
     System.out.println(t); 

    /* if(t.equalsIgnoreCase("03:00 pm")) 
     { 

      time_slots.get(j).click(); 
      break; 
     } 
     */ 

} 
+0

你的問題是明確的期待? – DCON

回答

0

的時隙需要一些時間來加載,因此,如果您沒有設置implicitlyWaitdriver.findElements不會等待任何存在的元素,將返回一個空列表。在driver實例化之後加一個implicitlyWait,應該解決這個問題(無論如何你都應該添加它)。

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

您還可以使用與Expected Conditions

WebDriverWait wait = new WebDriverWait(driver, 10); 
List<WebElement> time_slots = wait.until(ExpectedConditions.visibilityOfAllElementsLocatedBy(By.cssSelector("div.timings-wrap ul li")));