我正在尝试使用硒调用角度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,但它不起作用。我做错了什么?
答案 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()