我是硒的新手。
在我的应用程序中,它有几个标签,比如'AAA','ABC','ADF';我需要自动点击“ABC”标签上的点击。
这些标签有ID,它们是'tab1','tab2','tab3'。我可以通过使用id轻松完成此操作。但我不想使用它,因为这些选项卡会不时更改。所以我需要在选项卡中使用该名称,因为它是唯一的。
请告诉我该怎么做。
以下是我的标签:
<a id="tab2" class="current" onclick="expandcontent('sc2', this);" href="#"> ABC </a>
由于
答案 0 :(得分:5)
如果是这种情况,您可能需要回退到XPath并执行基于文本的搜索,例如:
//a[text()='ABC']
尽管如此,我建议您与开发团队合作,以获得一致的ID。基于文本的匹配很好,但是当你开始使用旧的浏览器时,你会发现它真的会减慢测试速度。
但是,您也可以在语言API中使用.LinkText
和.PartialLinkText
选择器 - 每个API(C#,Ruby,Python等)中都应该有这些选择器的实现。这里的问题是这仅适用于a
(锚)元素。但是,提供这是需要完成的唯一类型的元素,您可以使用它而不是XPath。
答案 1 :(得分:3)
欢迎来到SO!
正如Arran所提到的,您最好使用XPath
搜索标签名称,但您也可以使用FindBy
。这方面的一个例子是:
@FindBy(css=<the CSS value for the tab>) private WebElement pageTab2;
@FindBy(id="tab2") private WebElement pageTab2;
我只能同意Arran所提到的关于开发人员使用更相关的命名约定的内容。他们越容易完成工作,你就越能让他们的生活更轻松。
答案 2 :(得分:1)
最简单的答案是使用...“link = ABC”或link =“ABC”(它有前导和尾随空格)。
答案 3 :(得分:0)
最简单的方法是使用X路径查找标签。
当您开始时,有两个有用的工具可以帮助您找到X路径。下载Mozilla Firefox并获取这两个附加组件:
我建议您从刚刚开始使用这些工具开始帮助您。
至于你的问题: 我建议使用@Arran所说的......
//a[text()='ABC']
&#39; a&#39; - 将在整个页面中搜索单引号中的任何文字&#39;&#39;
如果您右键单击元素或选项卡,然后选择检查。然后,您将在页面的后端查看有助于识别每个不同元素的类或div。
答案 4 :(得分:0)
xpath=//a[contains(@class,"current") and contains(@text,"ABC")]