我很擅长在selenium中使用python。
我一直在尝试在我的网页上选择一个按钮。以下是检查按钮元素后出现的HTML片段:
<a class="btn col-xs-3 nav-btns" ui-sref="salt.dashboard.reports.minions" href="/dashboard/reports/minions/">
<span class="ssIcons-icon_reports salt-icon-3x ng-scope active" bs-tooltip="" data-title="Reports" container="body" placement="bottom" animation="none" data-trigger="hover" ng-class="{'active': state.current.name =='salt.dashboard.reports' … || state.current.name =='salt.dashboard.reports.minions'}">
::before
</span>
</a>
我已经尝试了所有我能想到的东西。以下是我尝试过的一些事情:
element = driver.find_element_by_class_name("btncol-xs-3")
element = driver.find_element_by_name("Reports")
element = driver.find_element_by_id("Reports")
我一直得到的错误是:
selenium.common.exceptions.NoSuchElementException:消息:无法执行 locate元素:{“方法”:“类 name“,”selector“:”salt.dashboard.reports“} Stacktrace: 在FirefoxDriver.prototype.findElementInternal_(文件:///tmp/tmpoRPJXA/extensions/fxdriver@googlecode.com/components/driver-component.js:10299) 在FirefoxDriver.prototype.findElement(文件:///tmp/tmpoRPJXA/extensions/fxdriver@googlecode.com/components/driver-component.js:10308) 在DelayedCommand.prototype.executeInternal_ / h(文件:///tmp/tmpoRPJXA/extensions/fxdriver@googlecode.com/components/command-processor.js:12282) 在DelayedCommand.prototype.executeInternal_(文件:///tmp/tmpoRPJXA/extensions/fxdriver@googlecode.com/components/command-processor.js:12287) 在DelayedCommand.prototype.execute /&lt; (文件:///tmp/tmpoRPJXA/extensions/fxdriver@googlecode.com/components/command-processor.js:12229) 根@克里斯盐:/家庭/克里斯/文件/项目/蟒硒#
答案 0 :(得分:1)
按data-title
找到元素:
driver.find_element_by_css_selector("span[data-title=Reports]")
或者,如果您需要访问a
标记:
driver.find_element_by_xpath("//a[span/@data-title = 'Reports']")
答案 1 :(得分:0)
克里斯,
您粘贴的范围没有名为id的属性。
此外,您的类选择器太宽,我建议在dom结构后使用更明确的路径。请记住,可能有多个元素具有该类名。
此外,您试图通过属性名称找到该元素中没有的属性。
最后,似乎你可能正在使用角度。您正在寻找的输入是否使用javascript dinamically创建?
而且,为什么你使用root来做这个测试?
在执行断言之前,您是否可以存储生成的html并手动检查您确实拥有该元素?。