我无法单击该按钮,但是我尝试的每种方法都失败了。 这是单击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()
文本“ RUN REPORT”周围有很多尴尬的空格。我不确定该怎么做,因为我尝试通过按钮的属性来定位该按钮。
答案 0 :(得分:1)
请尝试以下定位器之一- 以下定位符将删除文本周围的空格并仅查找文本
//button[normalize-space(text()='RUN REPORT')]
或者从html结构中,对于使用ng
标签以angular开发的应用来说,您的应用似乎是有角度的
//button[@ng-click="reportCtrl.generateReport()"]
答案 1 :(得分:0)
感谢@Dev:
找到我需要单击的元素的问题不是来自错误的Xpath定位器,而是不考虑切换iframe。我正在查看的源不直接包含该元素,但是确实有一个iframe(总共两个)。
当我单击按钮上的“检查元素”时,它没有直接向我显示组件。因为这些组件嵌套在iframe中。
我做到了:
driver.switch_to.frame('name of iframe')
之后
driver.find_element_by_xpath("//button[@ng-click='reportCtrl.generateReport()']")