如何解决是否可以找出某个元素是否在水豚的第二个元素之前?
我当时正在使用Caplybara
,Cucumber
和WebDriver
进行测试,所以我看着彼此重叠的两个元素,所以我想。
- 以一种更简单的方式,是否可以知道某个元素是否在第二个元素之前?
- 以更复杂的方式,是否可以知道一个元素是否在另一个元素之上?
结构简单
<div id="father-parent">
<p id="children-0">Firt element</p>
<p id="children-1">Second element</p>
</div>
解决方法
如果您要验证的是孩子0在孩子1之前,您可以使用CSS相邻的兄弟选择器
if ($http_x_forwarded_proto != "https") {
return 301 https://$server_name$request_uri;
}
如果您只想验证children-0是child-1的同级兄弟(不一定相邻),则可以使用常规的同级选择器
expect(page).to have_css('#children-0 + #children-1')
,
根据测试的编写方式,您还可以使用have_sibling
匹配器:
onClick
要测试元素位置,某些驱动程序支持:below
filter:
addToInventory.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View view) {
System.out.println(
mName.getText().toString().trim() + "," +
mDescription.getText().toString().trim() + "," +
mProductType.getText().toString().trim() + "," +
mPrice.getText().toString().trim() + "," +
mQuantity.getText().toString().trim());
}
});
first_child = find('#children-0')
expect(first_child).to have_sibling('#children-1')
是Capybara's global filters之一,您也可以使用expect(first_child).to have_sibling('#children-1',below: first_child)
,below
和above
。
如果您可以使用简单的内容匹配,我刚刚添加了一个新的匹配器作为 spec/support/matchers/appear_before_matcher.rb
:
RSpec::Matchers.define :appear_before do |later_content|
match do |earlier_content|
page.body.index(earlier_content) < page.body.index(later_content)
end
end
然后像这样使用它:
expect('First element').to appear_before('Second element')
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。