我无法单击按钮,但我尝试的每种方法都失败了。以下是在 chrome 中单击"检查"的结果:
<button class="rg-run-report-button md-raised md-primary md-ink-ripple md-button" type="submit" ng-transclude="" ng-click="reportCtrl.generateReport()" ng-disabled="!(reportCtrl.isGenerateButtonEnabled())">
RUN REPORT
<div class="md-ripple-container" style=""></div></button>
我将摆脱这个并构建一个像这样的 Xpath:
driver.find_element_by_xpath("//button[contains(text(), 'RUN REPORT')]").click()
文本"运行报告"周围有很多尴尬的空格。我不确定该怎么做,因为我试图通过其属性找到按钮。
尝试以下定位符之一 -以下定位器将删除文本周围的空格并仅查找文本
//button[normalize-space(text()='RUN REPORT')]
或者从 HTML 结构来看,您的应用程序对于使用 Angular 使用ng
标签开发的应用程序来说似乎是非常有效的
//button[@ng-click="reportCtrl.generateReport()"]
感谢@Dev:
查找我需要单击的元素的问题不是来自不正确的 Xpath 定位器,而是没有考虑切换 iframe。我正在查看的源没有直接包含该元素,但确实有一个 iframe(总共两个(包含该元素。
当我单击按钮上的"检查元素"时,它没有直接向我显示组件。因为这些组件嵌套在 iframe 中。
我做了:
driver.switch_to.frame('name of iframe')
然后
driver.find_element_by_xpath("//button[@ng-click='reportCtrl.generateReport()']")