0

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

测试代码在一个循环中,在四个选项卡(不是浏览器选项卡)上执行相同的操作。过程是:

单击四个选项卡之一。单击按钮以填充网格。在网格上执行 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>

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

右键单击可以下拉菜单,但单击操作失败并显示“元素不可见”,即使“$I->waitForElement”和 I->See 工作正常。

看着屏幕,“更改类别”元素肯定是可见的。

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

任何线索表示赞赏。

4

1 回答 1

0

根据 Naktibalda 的建议,我认为我已经解决了原始问题,方法是使每个下拉选项中的文本对于每个选项卡都是唯一的。

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

唯一有效的方法是在循环末尾添加:

$I->reloadPage();

我认为这是一个错误,但我不确定它是否是 CodeCeption、WebDriver 或 ExtJS 3 中的错误。

于 2019-01-20T05:22:20.540 回答