2017-05-31 92 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

是的,这工作。谢谢! –