代码之家  ›  专栏  ›  技术社区  ›  Petit

使用xpath单击aria标签元素

  •  1
  • Petit  · 技术社区  · 7 年前

    我无法使用Xpath和Selenium单击按钮,在这种情况下,aria标签有一个唯一的日期,这使得它能够很好地区分日历中的其他按钮。

    这是显示第5天和 当天的价格。


    <button type="button" class="CalendarDay__button" aria-label="Choose sunday, february 4 2018 as your check-in date. It's available." tabindex="0"><div class="calendar-day"><div class="day">4</div><div class="flybondi font-p fare-price"><span>$728*</span></div></div></button>
    <button type="button" class="CalendarDay__button" aria-label="Choose monday, february 5 2018 as your check-in date. It's available." tabindex="0"><div class="calendar-day"><div class="day">5</div><div class="flybondi font-p fare-price"><span>$728*</span></div></div></button>

    #假设我想点击2018年2月5日,我试过

    dtd0_button = driver.find_element_by_xpath("//button[contains(@class, 'CalendarDay__button') and (@aria-label, 'Choose monday, February 5 2018 as your check-in date. It's available') ]")
    dtd0_button.Click()
    

    这种方法有什么问题,如果我可以单击网页上日历中的任何日期,我会收到以下消息“WebElement”对象没有“Click”属性。

    1 回复  |  直到 7 年前
        1
  •  5
  •   GalAbra    6 年前

    xpath有几个错误,使其无效:

    1. 首先,你必须陈述 contains 在每个条件之前:

      "//button[contains(@attribute1, \"content1\") and contains(@attribute2, \"content2\")]"
      
    2. 这个 ' 在xpath中没有转义。请尝试以下操作:

      "//button[contains(@class,\"CalendarDay__button\") and contains(@aria-label,\"Choose monday, february 5 2018 as your check-in date. It's available.\")]"
      

    希望有帮助。祝你好运