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

时间:2019-01-19 05:40:56

标签: webdriver codeception acceptance

我查看了该问题的其他答案,但均不适用。我的问题非常奇怪。

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

单击四个选项卡之一。 单击一个按钮以填充网格。 在网格上执行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正常运行,单击操作也会失败,并显示“元素不可见”。

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

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

任何线索都值得赞赏。

1 个答案:

答案 0 :(得分:0)

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

不幸的是,CodeCeption无法再单击选项卡标题来更改第二遍的选项卡。从一开始就可以运行一次(我可以在运行第一遍之前单击任何选项卡标题)。在随后的遍历中,虽然我可以很好地看到非活动选项卡的标题(唯一),但这些标题不被视为可见。

唯一可行的方法是在循环末尾添加此代码:

$I->reloadPage();

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