我正在用PHP编写Selenium测试来检查Firefox中Web应用程序的性能。我想用它作为基线来比较不同的性能增强(升级JQuery,PHP 5.3等)。 Web应用程序是非常强大的AJAX,到目前为止我只遇到了一个问题。
我有一个AJAX调用,可以将内容加载到现有的div中。要测试呼叫是否完成,我使用以下代码行:
$selenium->waitForCondition('$(\'div[id="divId"]\').height() > 100', $timeout);
这是按照我的预期工作,但是当我尝试输入加载到div中的任何输入时,selenium会抛出错误“Element input [@ id =”inputId“] not found”。
我已经验证输入的id是正确的,我已经尝试了在div中加载的其他输入元素,但没有一个工作。我还试图添加一个睡眠(30),这样我就可以确定元素是在DOM和屏幕上,但是它再次没有区别。
我真的陷入了这一点,在我解决这个问题之前无法继续前进。非常感谢任何帮助。
谢谢, James Armes
答案 0 :(得分:4)
我会看一些事情:
在加载项目之前,请确保您检查的条件不正确。例如,检查height
似乎是可疑的 - 测试div中是否存在任何孩子会不会更好?
根据您编写选择器的方式,Selenium可能会认为input[@id='inputId']
是选择器的实际标识符(而不仅仅是inputId
)。确保不是这种情况。尝试使用inputId
,这应该足够了,因为它是一个标识符。
硒可能很挑剔。尝试不同的浏览器,看看你是否得到不同的结果。如果是这样,它可能代表Selenium不能很好地覆盖的区域。虽然这些通常很少而且很远,但这是可能的。但是,在确定是这种情况之前,我们需要查看更多代码。