python - 如何在硒中获得同一类的第二个值?
问题描述
我正在尝试在 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>
解决方案
有几种方法可以实现这一点。
- 收集您的元素使用列表
.find_elements_*
:
elements = driver.find_elements_by_class_name('formfield__message')
#for second element
elements[1].text
- 使用以下 xpath
following-sibling
:
element = driver.find_element_by_xpath('//input[@name="ln"]//following-sibling::span[@class="formfield__message"]')