2017-05-31 63 views
0

我試圖自動化一個涉及下載每月報告的過程。並不總是單擊複選框

//Set Call handler 
    Select handlerdd = new Select(driver.findElement(By.cssSelector("#searchType"))); 
    handlerdd.selectByValue("select"); 

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

    //Search, choose is exactly as the filtering option 
    Select searchcriteriadd = new Select(driver.findElement(By.cssSelector("table.content-form:nth-child(1) > tbody:nth-child(1) > " 
      + "                tr:nth-child(1) > td:nth-child(1) > select:nth-child(2)"))); 
    searchcriteriadd.selectByVisibleText("Is Exactly"); 

    //Search box 
    WebElement search = driver.findElement(By.cssSelector("#searchString")); 
    search.sendKeys("File I Want"); 
    search.sendKeys(Keys.ENTER); 

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

    //Explicitly wait until element is seen 
    WebDriverWait wait = new WebDriverWait(driver, 20); 
    wait.until(ExpectedConditions.visibilityOfElementLocated(By.cssSelector("td.content-grid-th-delete > input:nth-child(1)"))); 
    //Checkbox 
    driver.findElement(By.cssSelector("td.content-grid-th-delete > input:nth-child(1)")).click(); 

    //Wait 
    driver.manage().timeouts().implicitlyWait(20, TimeUnit.SECONDS); 
    //Generate Report button click 
    driver.findElement(By.cssSelector("fieldset.content-buttonbar:nth-child(10) > legend:nth-child(1) > button:nth-child(1)")).click(); 

的過程如下

  1. 從下拉菜單(handlerdd)時,選擇選項被選擇並顯示搜索欄。

  2. 將搜索過濾器設置爲「IsExactly」,並將文本「我正在查找的文件」發送到文本字段後輸入。

  3. 有一個選項,並選中該選項的複選框。
  4. 然後單擊生成報告按鈕。

我不完全確定問題是什麼。一個可能發生的事情(除了我的複選框不工作之外)是在文件被選中之前點擊生成報告按鈕。我不完全確定如何避免這個問題。我應該增加隱含的等待時間嗎?

回答

0

你的情況WebDriver在加載過濾的數據之前找到生成報告按鈕。

您試用Thread.sleep();。以下代碼可以幫助你。

//Set Call handler 
Select handlerdd = new Select(driver.findElement(By.cssSelector("#searchType"))); 
handlerdd.selectByValue("select"); 

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

//Search, choose is exactly as the filtering option 
Select searchcriteriadd = new Select(driver.findElement(By.cssSelector("table.content-form:nth-child(1) > tbody:nth-child(1) > " 
     + "                tr:nth-child(1) > td:nth-child(1) > select:nth-child(2)"))); 
searchcriteriadd.selectByVisibleText("Is Exactly"); 

//Search box 
WebElement search = driver.findElement(By.cssSelector("#searchString")); 
search.sendKeys("File I Want"); 
search.sendKeys(Keys.ENTER); 

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

//Explicitly wait until element is seen 
WebDriverWait wait = new WebDriverWait(driver, 20); 
wait.until(ExpectedConditions.visibilityOfElementLocated(By.cssSelector("td.content-grid-th-delete > input:nth-child(1)"))); 

//Checkbox 
    driver.findElement(By.cssSelector("td.content-grid-th-delete > input:nth-child(1)")).click(); 

    Thread.sleep(7000);//You can specify time according to your load time 

    //Generate Report button click 
    driver.findElement(By.cssSelector("fieldset.content-buttonbar:nth-child(10) > legend:nth-child(1) > button:nth-child(1)")).click(); 

讓我知道它是否工作。

+0

是的,這工作。謝謝! –