【问题标题】:Selenium JUnit test stuck at click()Selenium JUnit 测试卡在 click()
【发布时间】:2012-12-18 20:47:50
【问题描述】:

我在 Selenium IDE 中进行了快速测试,并将其导出为 Webdriver 支持的 JUnit 测试。如果页面上存在每个元素,它就可以正常工作。我更改了一些定位器,看看如果 Selenium 找不到它们会发生什么,我发现了一个奇怪的问题:

示例 1:

selenium.click("link=Something");

'Something' 不存在,所以我的测试会在几秒钟内停止,但以下情况除外: “com.thoughtworks.selenium.SeleniumException: Element link=Something not found”。

示例 2:

selenium.click("//div[2]/inprut");

显然在页面上找不到定位器(因为错字),但是测试并没有失败,只是卡在了这一行。

这可能是一个愚蠢的问题,但是是否有可能使 click() 函数(与 XPath 定位器一起使用)的行为类似于示例 1 中的函数?我是 Selenium 的初学者,因此不胜感激。

【问题讨论】:

    标签: java testing selenium junit webdriver


    【解决方案1】:

    在您的代码中添加一些支持逻辑是一种很好的做法。通常你可以extend你的类到一些TestScript类或其他东西,但更深入地,你可以实现一个像

    这样的函数
    public String getElement(String element) {
        try {
            if (isElementPresent(element)) return element;
    
            Integer timesIterated = 0;
            logInfo("Attempting to find element: [" + element + "]");
    
            for (timesIterated = 0; timesIterated < maxAttempts; timesIterated++) {
                if (isElementPresent(element)) {
                    if (!isVisible(element)) logInfo("WARNING: [" + element + "] is not visible!");
    
                    logStatus("Found");
    
                    selenium.highlight(element);
                    break;
                } else {
                    Integer t = timesIterated + 1;
                    logInfo(t.toString() + "/" + maxAttempts);
                    if (timesIterated >= maxAttempts) logTestResult("Could not find [" + element + "]", false);
                }
    
                sleep(2);
            }
    
        } catch (Exception x) {
            logError(x.getMessage());
            end();
        }
    
        return element;
    }
    

    请注意,这是非常随意的,我提到的功能对你来说是不存在的。你必须自己实现它们。这是我使用的框架中用于查找元素的实际代码的 sn-p。如果不是,它将记录一个错误,然后脚本失败。

    编辑:这与您的问题有关,因为我的 isElementPresent(String) 函数适用于 xpath 和 css...所以无论您提供什么选择器,它都会起作用。因此,在您的 isElementPresent(String) 函数中,实现支持两个选择器的逻辑。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2012-06-21
      • 1970-01-01
      • 2012-09-06
      • 1970-01-01
      • 2015-10-11
      • 2023-04-10
      相关资源
      最近更新 更多