首页 > 解决方案 > 如何在硒中获得同一类的第二个值?

问题描述

我正在尝试在 selenium 中进行模拟,当两种输入类型留空并且输入字段未聚焦时,它将返回无效消息。我想要做的是得到这两个具有相同span classname的无效消息。

这是我的python代码:

    fn_input = driver.find_element(By.XPATH, "//input[@name='fn']")
    fn_input.send_keys('')
    ln_input = driver.find_element(By.XPATH, "//input[@name='ln']")
    ln_input.send_keys('')
    driver.find_element_by_id('submit_search').click()
    time.sleep(5)
    fn_error_field = driver.find_element_by_class_name('formfield__message')

上面的代码可以很好地找到fn_input的无效消息。我的问题是如何获得ln_input的第二条无效消息?

HTML:

<div class="formfield formfield--notification formfield--column-view">
  <div class="formfield__label">First name</div>
  <div class="formfield__input-wrapper">
    <input
      name="fn"
      id="fn"
      type="text"
      class="input formfield__input"
      value=""
    /><span
      class="formfield__icon-secondary icon-close icon-color-notification"
    ></span
    ><span class="formfield__message">Invalid field</span>
  </div>
</div>

<div
  class="formfield formfield--notification formfield--column-view capitalized"
>
  <div class="formfield__label">Last Name</div>
  <div class="formfield__input-wrapper">
    <input
      name="ln"
      id="ln"
      type="text"
      class="input formfield__input"
      value=""
    /><span
      class="formfield__icon-secondary icon-close icon-color-notification"
    ></span
    ><span class="formfield__message">Invalid field</span>
  </div>
</div>

<button id="submit_search" type="button" class="button button--primary">
  </i>submit
</button>

标签: pythonseleniumselenium-webdriver

解决方案


有几种方法可以实现这一点。

  1. 收集您的元素使用列表.find_elements_*
elements = driver.find_elements_by_class_name('formfield__message')

#for second element
elements[1].text
  1. 使用以下 xpath following-sibling
element = driver.find_element_by_xpath('//input[@name="ln"]//following-sibling::span[@class="formfield__message"]')

XPath 轴


推荐阅读