如何使用硒调用角度函数(ng-click)

时间:2018-04-18 11:18:45

标签: python angular selenium xpath css-selectors

我正在尝试使用硒调用角度ng-click。这个问题基于这个javascript:

<span class="col" ng-click="getHope(1,'pray','smile')">100%</span>

我变成了:

driver.find_element_by_css_selector("[ng-click=getHope(1,'pray','smile')]").click()

我甚至尝试添加span:

driver.find_element_by_css_selector("[ng-click=getHope(1,'pray','smile')]").click()

并添加:

driver.find_element_by_css_selector("span[ng-click=getHope(1,\'pray\',\'smile\')]").click()

但我可以出现以下错误:

 selenium.common.exceptions.InvalidSelectorException: 
 Message: invalid selector: An invalid or illegal selector was specified

我试图模仿this link,但它不起作用。我做错了什么?

2 个答案:

答案 0 :(得分:2)

尝试以下XPath选择器:

driver.find_element_by_xpath("//span[@ng-click=\"getHope(1,'pray','smile')\"]").click()

但更好的解决方案(IMO)是直接用JS执行器执行函数getHope

答案 1 :(得分:1)

根据您在所需元素上与click()共享的HTML,您可以使用以下任一定位策略

  • xpath

    driver.find_element_by_xpath("//span[@class='col' and contains(.,'100%')]").click()
    
  • xpath

    driver.find_element_by_xpath("//span[@class='col' and starts-with(@ng-click,'getHope') and contains(.,'100%')]").click()
    
  • css_selector

    driver.find_element_by_css_selector("span.col[ng-click^='getHope']").click()