我查看了该问题的其他答案,但均不适用。我的问题非常奇怪。
测试代码处于循环中,该循环在四个选项卡(而非浏览器选项卡)上执行相同的操作。该过程是:
单击四个选项卡之一。 单击一个按钮以填充网格。 在网格上执行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正常运行,单击操作也会失败,并显示“元素不可见”。
看着屏幕,“更改类别”元素绝对可见。
这是奇怪的部分。无论我如何更改测试选项卡的顺序,它始终在测试的第二个选项卡上失败(第二遍循环)。这意味着选择器和代码都是正确的。我试图将类添加到选择器中,但是结果是相同的。
任何线索都值得赞赏。
答案 0 :(得分:0)
根据Naktibalda的建议,我认为我已经解决了原来的问题,方法是使每个选项卡的每个下拉选项中的文本都唯一。
不幸的是,CodeCeption无法再单击选项卡标题来更改第二遍的选项卡。从一开始就可以运行一次(我可以在运行第一遍之前单击任何选项卡标题)。在随后的遍历中,虽然我可以很好地看到非活动选项卡的标题(唯一),但这些标题不被视为可见。
唯一可行的方法是在循环末尾添加此代码:
$I->reloadPage();
我认为这是一个错误,但不确定是CodeCeption,WebDriver或ExtJS 3中的错误。