使用 Selenium 检查复选框的标签并在 Python 中运行

Check the label of a checkbox using Selenium and behave in Python

我想编写一个测试来检查网站上显示的文本是否正确。它主要工作,但我坚持检查复选框的标签。

HTML:

<div class="checkbox">
  <label>
    <input id="remember_me" name="remember_me" tabindex="130" type="checkbox" value="y">
      " Remain logged in
      "
  </label>
</div>

表现:

Scenario: See the formular for log in
    Given I am on the "/login" page
    Then I should see header "Log In"
    ...
    And I should see the checkbox for "remember_me"
    And I should see label "Remain logged in"

发现 header 没有问题:

@then(u'I should see header "{header}"')
def step_impl(context, header):
  assert context.browser.find_element_by_xpath("//h1[contains(text(), '{}')]".format(header))

以及复选框本身:

@then(u'I should see the checkbox for "{name}"')
def step_impl(context, name):
  assert len(context.browser.find_elements_by_xpath("//input[@type='checkbox'][@name='{}']".format(name))) > 0

但是我不知道如何专门检查标签 "Remain logged in"。我尝试过的任何方法,包括使用 find_text() 或以下方式检查文本本身:

def step_impl(context, label):
  assert context.browser.find_element_by_xpath("//input[@type='checkbox' and contains(text(), '{}')]".format(name))) > 0

没有工作。

Selenium 是否允许检查标签的文本?如果是,我将如何处理?

您是否正确定位标签元素?以下代码应该 return 来自标签 webelement 的文本。

label_element = browser.find_element_by_xpath("//div[@class='checkbox']/label")

TextValue = label_element.text

TextValue  = label_element.get_attribute('textContent')