繁体   English   中英

如何通过将链接与用户输入文本进行匹配来让 Python 和 Selenium 单击 angularjs 链接?

[英]How do I get Python and Selenium to click an angularjs link by matching the link to user input text?

我想点击的链接是用户输入的。 例如,用户输入变量track ,“Tampa Bay Downs”

我的 python selenium 测试程序将搜索以下代码:

<a ng-click="updateFavorite()(raceInfo.trackAbbr); $event.stopPropagation();">EV
  i class="my-icon-favorite-fill my-icon-favorite-fill_active" ng-class="{
  'my-icon-favorite-fill' : !showActionFeedback, ...onFeedback, 'rotating spinner' :
  showActionFeedback}" update-favorite-action-feedback="" qa-label="race-favorite-icon">
    ::before
   </i>
</a>
<span class="ng-binding" ng-bind="::raceInfo.trackName" qa-label="race-track-name">
Tampa Bay Downs</span>
</td>

成功的代码会找到输入词“Tampa Bay Downs”,然后点击它来激活一个angularjs动作,这将导致一个单独的页面打开,这是所需的动作。

我尝试使用正确的 xpath 找到链接,但没有成功。
我也试过这个没有成功:

try:
    element = driver.find_element_by_css_selector("a[qa-label="+track+"]")
except:
    print "error finding css selector for track"

您可以使用xpath -sibling选择使用xpath来查找包含曲目名称的span 标签之前的a ,即Tampa Bay Downs

"//span[contains(.,'{}')]/preceding-sibling::a".format(track) 

或者更具体地说,使用 span 类名:

 "//span[@qa-label='race-track-name' and contains(.,'{}')]/preceding-sibling::a".format(track) 

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM