2013-06-28 42 views
0

有人可以帮助我在硒webdriver测试中使用以下Java代码?我知道可能有更好的方法去做,但我接手之前从事这项工作的人是在工作中学习。如何简化此硒/ java代码以使其正常工作?

基本上,它会进入一个页面并检查不同的元素,如果它发现它将某些数据输入到字段中。

问题是此代码针对不同的网站运行,现在有一个问题,其中一个页面上的文本To date和to_date都在页面上,所以测试失败,因为它找到了一个元素endDateParam,但没有元素to_date。

有人能帮我解决这个问题吗?我需要它,所以如果它在页面上找到文本to_date,它将使用to_date参数,如果它发现文本到目前为止它将使用endDateParam,如果它发现文本到日期AND to_date它将使用它找到的参数。

我试着添加一个try catch,它在捕获时什么都不做,但仍然失败。

 if (PWSHelper.verifyTextPresent("To date", driver)) 
     { 
      try { 
       WebElement toDate = driver.findElement(By.name("endDateParam")); 
       toDate.sendKeys(boHelper.nextWeek()); 
       } catch (NoSuchElementException ex) 
       { 
        System.out.println("endDateParam Not Found"); 
        System.out.println(); 
       } 
     } 


     if (PWSHelper.verifyTextPresent("to_date", driver)) 
     { 
      try { 
      WebElement toDate = driver.findElement(By.name("to_date")); 
      toDate.sendKeys(boHelper.nextWeek()); 
      } catch (NoSuchElementException ex) 
      { 
       System.out.println("to_date Not Found"); 
       System.out.println(); 
      } 
} 
+3

你为什么要运行针对不同网站上使用相同的测试?你应该把代码分开 - 你的问题比这个要深得多,你应该为站点A进行一系列测试,对站点B进行一系列测试。如果他们有相似之处,你就会开始思考继承和不同方面的问题。 Java语言可以帮助您在一个地方提供通用代码 - 但您目前正在将两个*完全不同的*测试混为一谈。 – Arran

回答

0

怎么样,可以与你的不同的参数来调用函数:

private void doSomething(String textToFind, String target) 
if (PWSHelper.verifyTextPresent(textToFind, driver)) 
     { 
      try { 
      WebElement toDate = driver.findElement(By.name(target)); 
      toDate.sendKeys(boHelper.nextWeek()); 
      } catch (NoSuchElementException ex) 
      { 
       System.out.println(textToFind + " Not Found"); 
       System.out.println(); 
      } 
}