Python 如何使用selenium调用角度函数(ng单击)
我试图使用selenium调用一个有角度的ng单击。此问题基于以下javascript:Python 如何使用selenium调用角度函数(ng单击),python,angular,selenium,xpath,css-selectors,Python,Angular,Selenium,Xpath,Css Selectors,我试图使用selenium调用一个有角度的ng单击。此问题基于以下javascript: <span class="col" ng-click="getHope(1,'pray','smile')">100%</span> 我甚至尝试添加span: driver.find_element_by_css_selector("[ng-click=getHope(1,'pray','smile')]").click() 并加入: driver.find_element_by
<span class="col" ng-click="getHope(1,'pray','smile')">100%</span>
我甚至尝试添加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
我试着模仿,但不起作用。我做错了什么?根据您共享给
的HTML,在所需元素上单击()
,您可以使用以下任一定位器策略:
:xpath
driver.find_element_by_xpath("//span[@class='col' and contains(.,'100%')]").click()
driver.find_element_by_xpath("//span[@class='col' and starts-with(@ng-click,'getHope') and contains(.,'100%')]").click()
:xpath
driver.find_element_by_xpath("//span[@class='col' and contains(.,'100%')]").click()
driver.find_element_by_xpath("//span[@class='col' and starts-with(@ng-click,'getHope') and contains(.,'100%')]").click()
:css\u选择器
driver.find_element_by_css_selector("span.col[ng-click^='getHope']").click()
driver.find_element_by_xpath("//span[@ng-click=\"getHope(1,'pray','smile')\"]").click()
但更好的解决方案(IMO)是直接使用JS执行器执行函数
getHope
。这确实有效,但还有更多的跨度包含“100%”。这只会选择第一个。对不起,我应该提一下。@nappingkid添加了更多选项,请检查这些选项是否满足您的需要。让我知道情况。这比我看到的要复杂一点。这些解决方案仅选择第一个跨度。有两个相同的div包含这些跨度为100%。div的唯一不同之处是它们包含100%另一个包含100%我可以使用此信息进一步指定选择吗?签出我答案中的第二个和第三个选项。尝试了这两个选项,但它们仍然仅选择第一个跨距。我意识到这个网站不是为刮刀设计的。