在我的selenium测试中,有以下代码:
el = driver.find_element_by_xpath("//*[@id='myid']")
print el.tag_name输出与预期一致
ul但是,如果在XPath表达式中将//*通配符替换为显式//ul:
el = driver.find_element_by_xpath("//ul[@id='myid']")抛出NoSuchElementException。无法解释。使用css选择器:
el = driver.find_element_by_css_selector("ul#myid")工作正常。
使用: FireFox 7 x64、Python2.7 x64、selenium 2.39、Windows 26.0
发布于 2014-01-07 10:15:39
我怀疑它是XHTML名称空间。请参阅类似的问题here和here。我的印象是,Webdriver/Selenium的局限性在于无法声明XPath使用的名称空间,而且这个问题还没有得到解决。
因此,您可能会遇到变通方法,如//*...或//*[local-name() = 'ul']等。
发布于 2014-01-09 06:53:26
在使用selenium时,使用Xpath是非常不准确的。在selenium文档中,它甚至直接遭到反对。使用ID或名称,除非它们是动态的,或者您有其他原因无法使用它们。
https://stackoverflow.com/questions/20959439
复制相似问题