无法捕捉异常

时间:2015-09-16 12:59:00

标签: java selenium webdriver testng

当我开始测试时,我希望看到一个例外,但是程序只停留在一行" mobileTelephony.driver"并且没有例外。我不明白为什么?

@Test(groups = {"non-basic"})
@Parameters({"idCategory"})
public void checkSearchForm(int idCategory) throws InterruptedException {


String categoryName;
    int location = 1;
    StackOfCategories sub1Stack = TestSuiteMobileTelephony.sub1Stack;   
    boolean isItSubCategory;

basePage.getBasePage();

basePage.clickCategoryName(idCategory);
MobileTelephonyPage mobileTelephony = PageFactory.initElements(basePage.driver, MobileTelephonyPage.class);

while (location <= 3) {
    mobileTelephony.clickChangeLocation(location);
    for(int i = 1; i <= sub1Stack.size(); i++) {
        if (location == 1) {
            categoryName = sub1Stack.getCategory(i).getNameEn();
        } else if (location == 2) {
            categoryName = sub1Stack.getCategory(i).getNameRu();
        } else {
            categoryName = sub1Stack.getCategory(i).getNameUk();
        }

        mobileTelephony.writeInSearchFormAndClick(categoryName);

        try {
            mobileTelephony.driver.findElement(By.xpath(".//div[@id='breadcrumbs']/span1"));
        } catch(Exception e){
            e.printStackTrace();
            mobileTelephony.back();
        }
        isItSubCategory = true;

        AssertMessage.assertTrueNavigateSubCategory(categoryName, isItSubCategory);
        mobileTelephony.back();
    }
    location++;
}

} Mobail Telefony代码 公共类MobileTelephonyPage扩展了BasePage {

public void clickAndWriteNumber(String number) throws AWTException {

    String[] numsArray = number.split("");

    number1.clear();
    number1.click();
    Robot robot = new Robot();
    // Constryction
    for(int i = 0; i < numsArray.length; i++) {

        switch(Integer.parseInt(numsArray[i])) {
            case 0 :
                robot.keyPress(KeyEvent.VK_0);
                break;
            case 1 :
                robot.keyPress(KeyEvent.VK_1);
                break;
            case 2 :
                robot.keyPress(KeyEvent.VK_2);
                break;
            case 3 :
                robot.keyPress(KeyEvent.VK_3);
                break;
            case 4 :
                robot.keyPress(KeyEvent.VK_4);
                break;
            case 5 :
                robot.keyPress(KeyEvent.VK_5);
                break;
            case 6 :
                robot.keyPress(KeyEvent.VK_6);
                break;
            case 7 :
                robot.keyPress(KeyEvent.VK_7);
                break;
            case 8 :
                robot.keyPress(KeyEvent.VK_8);
                break;
            case 9 :
                robot.keyPress(KeyEvent.VK_9);
                break;
        }
    }       
}

public MobileTelephonyPage(WebDriver driver) {
    super(driver);
}

public int getHeightImg(int number) {
    int height = driver.findElement(By.xpath("(.//div[@class='icon']/img)[" + number + "]")).getSize().getHeight();
    return height;  
}

public int getWidthImg(int number) {
    int width = driver.findElement(By.xpath("(.//div[@class='icon']/img)[" + number + "]")).getSize().getWidth();
    return width;
}

public MobileTelephonyPage back() {
    driver.navigate().back();
    return this;
}

public String getCurrentURL() {
    return driver.getCurrentUrl();
}

public void clickOperator(String linkText) {
    driver.findElement(By.linkText(linkText)).click();
}

}

在调试程序中停止下一代代码(类HttpCommandExecutor)

    this.log("profiler", new HttpProfilerLogEntry(command.getName(), true));
    HttpResponse e = this.client.execute(httpRequest, true);
    this.log("profiler", new HttpProfilerLogEntry(command.getName(), false));

1 个答案:

答案 0 :(得分:1)

没有抛出异常。

代码可能需要很长时间才能执行,或者它处于活锁状态。

livelock 是执行函数但永远不会结束的情况。例如,因为在for循环中你松散以更新变量,因此测试始终为真

在新信息之后编辑

来自WebDriver的javadoc:

  

这种方法受到“隐含等待”的影响。时间有效   执行时间。 findElement(..)调用将返回一个   匹配行,或重复尝试,直到配置的超时为   的达到即可。 findElement 不应用于查找不存在的   元素,使用findElements(By)并断言零长度响应   代替。

正如您所看到的,该功能无法完全按照我帖子的前两行所述返回。