如何提取包含一些已知文本的元素
How to extract the element(s) that contains some known text
我正在使用 Watir-Webdriver。
我知道页面上有特定的文字,即:"First Name is required"
browser.text.include("First Name is required")
returns true
哪个好
使用 Watir-Webdriver 是否有一些方法可以附加到 browser.text.include("First Name is required")
的末尾,从而 return 包含特定文本的 css/html?
此文本字段上的检查元素 returns:
<h3 class="split-sm"></h3>
<div class="input-group">
<div class="input-container input-left-half round">
<div class="validate status-invalid"></div>
<input id="member_first_name" type="text" name="member_first_name"></input>
<label class="error" for="member_first_name">
<span class="label-norm">
First Name
</span>
<span id="member_first_name-error" class="label-error">
is required
</span>
</label>
</div>
要查找包含特定文本的任何元素,您可以使用带有 :text
定位器的 element
方法:
browser.element(:text => 'First Name is required')
但是,默认情况下,Watir 将 return 第一个匹配的元素。鉴于我们正在整个 DOM 中搜索任何元素类型,这将始终是 html
元素:
browser.element(:text => 'First Name is required').tag_name
#=> "html"
如果您知道有关要查找的元素的更多详细信息,则可以将其与 :text
定位器结合使用并获取该特定元素。例如,如果您知道它将始终是一个带有 class "error" 的 label
元素,您可以这样做:
browser.label(:class => 'error', :text => 'First Name is required').html
#=> <label class="error" for="member_first_name">
#=> <span class="label-norm">
#=> First Name
#=> </span>
#=> <span id="member_first_name-error" class="label-error">
#=> is required
#=> </span>
#=> </label>
如果您无法创建更具体的定位器,您可以使用 elements
方法(注意复数形式)来查找包含特定文本的 all 元素。集合中的最后一个元素将是包含文本的最接近的可能元素:
browser.elements(:text => 'First Name is required').last.html
#=> <label class="error" for="member_first_name">
#=> <span class="label-norm">
#=> First Name
#=> </span>
#=> <span id="member_first_name-error" class="label-error">
#=> is required
#=> </span>
#=> </label>
我正在使用 Watir-Webdriver。
我知道页面上有特定的文字,即:"First Name is required"
browser.text.include("First Name is required")
returns true
哪个好
使用 Watir-Webdriver 是否有一些方法可以附加到 browser.text.include("First Name is required")
的末尾,从而 return 包含特定文本的 css/html?
此文本字段上的检查元素 returns:
<h3 class="split-sm"></h3>
<div class="input-group">
<div class="input-container input-left-half round">
<div class="validate status-invalid"></div>
<input id="member_first_name" type="text" name="member_first_name"></input>
<label class="error" for="member_first_name">
<span class="label-norm">
First Name
</span>
<span id="member_first_name-error" class="label-error">
is required
</span>
</label>
</div>
要查找包含特定文本的任何元素,您可以使用带有 :text
定位器的 element
方法:
browser.element(:text => 'First Name is required')
但是,默认情况下,Watir 将 return 第一个匹配的元素。鉴于我们正在整个 DOM 中搜索任何元素类型,这将始终是 html
元素:
browser.element(:text => 'First Name is required').tag_name
#=> "html"
如果您知道有关要查找的元素的更多详细信息,则可以将其与 :text
定位器结合使用并获取该特定元素。例如,如果您知道它将始终是一个带有 class "error" 的 label
元素,您可以这样做:
browser.label(:class => 'error', :text => 'First Name is required').html
#=> <label class="error" for="member_first_name">
#=> <span class="label-norm">
#=> First Name
#=> </span>
#=> <span id="member_first_name-error" class="label-error">
#=> is required
#=> </span>
#=> </label>
如果您无法创建更具体的定位器,您可以使用 elements
方法(注意复数形式)来查找包含特定文本的 all 元素。集合中的最后一个元素将是包含文本的最接近的可能元素:
browser.elements(:text => 'First Name is required').last.html
#=> <label class="error" for="member_first_name">
#=> <span class="label-norm">
#=> First Name
#=> </span>
#=> <span id="member_first_name-error" class="label-error">
#=> is required
#=> </span>
#=> </label>