gpt4 book ai didi

ruby-on-rails - cucumber Xpath 选择器

转载 作者:行者123 更新时间:2023-12-03 17:00:53 25 4
gpt4 key购买 nike

我在尝试用 cucumber 测试的页面上有以下 HTML。

<div class='try_options'>
<ul>
<li>
<div>
<img alt="" src="/images/main_page1.jpg" />
<div class='right_section'>

<p>
Feature 1
</p>
<a class='suggest_btn' href='url1'>Try Now</a>
</div>
</div>
</li>
<li>
<div>
<img alt="" src="/images/main_page2.jpg" />
<div class='right_section'>

<p>
Feature 2
</p>
<a class='suggest_btn' href='url2'>Try Now</a>
</div>
</div>
</li>
<li>
<div>
<img alt="" src="/images/main_page3.jpg" />
<div class='right_section'>

<p>
Feature 3
</p>
<a class='suggest_btn' href='url3'>Try Now</a>
</div>
</div>
</li>
<li>
<div>
<img alt="" src="/images/main_page4.jpg" />
<div class='right_section'>

<p>
Feature 4
</p>
<a class='suggest_btn' href='url4'>Try Now</a>
</div>
</div>
</li>
</ul>
</div>

基本上,有一些功能,每个功能都有一个“立即试用”链接。我想测试单击链接是否会将我带到相应功能的页面。

我发现了一个类似的步骤实现 here ,但是 XPATH 有问题。任何帮助将非常感激。

最佳答案

当我之前做过类似的事情时,我使用 XPath 来定位“标识符”元素——在你的例子中是 p标签包含例如“功能 1”,然后沿着 DOM 向上走到一个共同的父级(此处为 li),然后再次向下找到我所追求的 sibling (例如与 p 关联的链接)。这可能对您有用:

def find_link_for_feature(feature_name)
find(:xpath, "//p[contains(.,'#{feature_name}')]/ancestor::li/descendant::a")
end

find_link_for_feature('Feature 1').click

您可能需要添加额外的过滤,以便它只找到带有 suggest_btn 的链接。上课,看你的情况。

然而,正如我在对该问题的评论中提到的那样,我更喜欢修改标记,以便它实际上是可测试的,而不必跳过诸如此类的障碍!当我无法修改标记时,我认为这种 XPath 是最后的手段。

编辑:

考虑到您询问如何在父元素范围内执行其他操作的评论,我更倾向于执行以下操作,这为您提供了更大的灵 active ,并略微减少了丑陋的 XPath:
def find_section_for_feature(feature_name)
find(:xpath, "//p[contains(.,'#{feature_name}')]/ancestor::li")
end

within find_section_for_feature('Feature 1') do
click_link 'Try Now'
# Anything else you want to do
and

关于ruby-on-rails - cucumber Xpath 选择器,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/8307653/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com