处理Selenium + ExtJs生成的html绝不是一种乐趣,尤其是当你无法改变源代码时。我目前的问题是尝试单击包含特定标签的表单的第4个父级中包含的按钮。没有可用的有用ID或类名。
奇怪(我猜它是一个extJs的东西),按钮是在表单之外,这就是父链的原因。页面中还有多种形式。但xpath没问题。在Firefox Xpath检查器中,我可以运行此xpath - 它会找到按钮。
(//form[.//label[contains(text(),'Annual')]])[1]//parent::div//parent::div//parent::div//parent::div//button[.='Calculate']
当我在Selenium RC中尝试它时,它剥去了圆括号。我正在监视Selenium日志输出,以便在发生这种情况时显而易见。另一个stackoverflow线程说当发生将xpath =放在前面时,因为Selenium不知道启动w / o //是一个xpath。所以......
xp = "xpath=(//form[.//label[contains(text(),'Annual')]])[1]//parent::div//parent::div//parent::div//parent::div//button[.='Calculate']"
result = self.selenium.click_at( xp )
Selenium日志显示现在保留了圆括号,但是没有执行单击 - click_at()返回false并且没有生成错误。
我错过了什么(无疑是致命的明显的事情)?