无效的xpath表达式python

时间:2017-11-20 17:08:45

标签: python selenium xpath automated-tests

我试图获取所有以某些东西开头的xpath,但是当我测试它时,它说我的xpath无效。

这是我的xpath:

xpath = "//*[contains(@id,'ClubDetails_"+ str(team) +"']"

我打印时输出的内容:

//*[contains(@id,'ClubDetails_1']

这是HTML:

<div id="ClubDetails_1_386" class="fadeout">
   <div class="MapListDetail">
      <div>Bev Garman</div>
      <a href="javascript:DoMailTo('armadaswim@aol.com')">armadaswim@aol.com</a>
   </div>
   <div class="MapListDetail">
      <div>Rolling Hills Country Day School</div>
      <div>26444 Crenshaw Blvd</div>
      <div>Rolling Hills Estates, CA 90274</div>
   </div>
   <div class="MapListDetailOtherLocs_1">
      <div>This club also swims at other locations</div>
      <a href="javascript:ShowOtherLocs(386,'La Mirada Armada')"><span class="show_them_link">show them...</span></a>
   </div>
</div>

我错过了什么?

1 个答案:

答案 0 :(得分:0)

一种替代方法是使用模式来匹配以一些文本开头的ID,并将所有这些元素放在列表中,然后逐个迭代列表,并检查条件是否该元素的id属性包含您想要的团队。< / p>

您可以在CSS选择器中匹配模式,如下所示:

div[id^='ClubDetails_']

这就是xpath中的方式:

//div[starts-with(@id, 'ClubDetails_')]

代码示例:

expectedid = "1_386"
clubdetails = driver.find_elements_by_css_selector("div[id^='ClubDetails_']")
for item in clubdetails:
    elementid = item.get_attribute('id')
    expectedid in elementid
    // further code