代码之家  ›  专栏  ›  技术社区  ›  Bob Ray

codeception webdriver验收测试无法单击它可以看到的元素

  •  0
  • Bob Ray  · 技术社区  · 6 年前

    我看过这个问题的其他答案,但都不适用。我的是这个问题的一个非常奇怪的版本。

    测试代码位于对四个选项卡(而不是浏览器选项卡)执行相同操作的循环中。这个过程是:

    单击四个选项卡之一。 单击按钮填充网格。 在网格上执行5个操作。 (对每个选项卡重复)

    所有五个操作都在第一次循环中正常工作。第二次通过循环,第三次操作失败:

    $I->clickWithRightButton("//div[text() = '" . oPageVariables::$namePrefix . 
        $name . "']");
    $I->waitForElement("//span[text() = 'Change Category']");
    $I->see('Change Category');
    $I->wait(1);
    $I->click("//span[text() = 'Change Category']");
    

    以下是相关的HTML:

    <span class="x-menu-item-text" id="ext-gen315">Change Category</span>
    

    我不能用身份证,因为它可以改变。请注意,我要单击的元素在每个选项卡上都是相同的。

    右键单击可以下拉菜单,但单击操作失败,并显示“element is not visible”,即使“$I->waitForElement”和“I->请参见“工作正常”。

    观看屏幕,“更改类别”元素绝对可见。

    这是奇怪的部分。无论我如何更改测试选项卡的顺序,它总是在第二个测试选项卡上失败(第二次通过循环)。这意味着选择器和代码都是正确的。我已经尝试将类添加到选择器中,但结果是相同的。

    任何线索都能理解。

    1 回复  |  直到 6 年前
        1
  •  0
  •   Bob Ray    6 年前

    基于Naktibalda的建议,我认为我已经通过使每个下拉选项中的文本对于每个选项卡都是唯一的来解决了最初的问题。

    不幸的是,codeception无法再单击选项卡标题来更改第二遍的选项卡。这在开始的时候可以工作一次(在运行第一个过程之前,我可以单击任何选项卡标题)。在随后的过程中,非活动选项卡(唯一)的标题被认为是不可见的,尽管我可以很好地看到它们。

    最后成功的唯一一件事是在循环结束时添加:

    $I->reloadPage();
    

    我认为这是一个bug,但我不确定它是否是codeception、webdriver或extjs 3中的bug。

    推荐文章