当我开始测试时,我想看到一个异常,但是程序只停留在“ 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));

最佳答案

没有异常被抛出。

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

活锁是一种功能被执行但从未结束的情况。例如,因为在for循环中您松散地更新了变量,所以测试始终为true

修改后的新信息

WebDriver的javadoc中:


  该方法受“隐式等待”时间的影响
  执行时间。 findElement(..)调用将返回一个
  匹配的行,或者重复尝试直到配置的超时为
  到达。 findElement不应用于查找不存在的内容
  元素,使用findElements(By)并声明零长度响应
  代替。


如您所见,该函数无法完全按照我的帖子的前两行所述返回。

关于java - 无法捕获异常,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/32609306/

10-11 23:17
查看更多