Python Selenium:无法在页面上找到元素

Python Selenium: Can't find an element on page

我对在 selenium 中使用 python 还很陌生。

我一直在尝试 select 我网页上的按钮。这是检查按钮元素后出现的 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: Message: Unable to locate element: {"method":"class name","selector":"salt.dashboard.reports"} Stacktrace: at FirefoxDriver.prototype.findElementInternal_ (file:///tmp/tmpoRPJXA/extensions/fxdriver@googlecode.com/components/driver-component.js:10299) at FirefoxDriver.prototype.findElement (file:///tmp/tmpoRPJXA/extensions/fxdriver@googlecode.com/components/driver-component.js:10308) at DelayedCommand.prototype.executeInternal_/h (file:///tmp/tmpoRPJXA/extensions/fxdriver@googlecode.com/components/command-processor.js:12282) at DelayedCommand.prototype.executeInternal_ (file:///tmp/tmpoRPJXA/extensions/fxdriver@googlecode.com/components/command-processor.js:12287) at DelayedCommand.prototype.execute/< (file:///tmp/tmpoRPJXA/extensions/fxdriver@googlecode.com/components/command-processor.js:12229) root@chris-salt:/home/chris/Documents/projects/python-selenium#

克里斯,

您粘贴的跨度没有名为 id 的属性。

此外,您的 class 选择器太宽,我建议在 dom 结构之后使用更明确的路径。请记住,可能有多个元素具有 class 名称。

此外,您正试图通过该元素中没有的属性名称进行查找。

最后,您似乎正在使用 angular。您要查找的输入是否是使用 javascript 动态创建的?

另外,你为什么要使用 root 来做这个测试?

在执行断言之前,您能否存储结果 html 并手动检查您是否确实拥有该元素?

通过data-title查找元素:

driver.find_element_by_css_selector("span[data-title=Reports]")

或者,如果您需要访问 a 标签:

driver.find_element_by_xpath("//a[span/@data-title = 'Reports']")