查找是否存在元素,然后单击其相应的按钮

时间:2015-07-17 17:31:31

标签: selenium-webdriver

如果我有一个包含元素列表的页面,我需要找到一个特定元素并单击其操作按钮。列表中的每个元素都有其动作按钮。我可以编写以找到特定元素,但我无法找到其相应的操作按钮。因此,例如列表页面如下所示,我必须单击Test2的操作按钮

测试1 - 行动
Test2 - 行动
Test3 - 行动

按钮文本(Action)对于每个按钮都很常见。另外我不想使用xpath或它的数字,因为如果列表增长它可能会改变,每次我想能够点击相同的元素&#39 ; s操作按钮。有没有办法可以某种方式使用" if else"并找到该名称,然后单击其操作按钮? TIA。

1 个答案:

答案 0 :(得分:0)

您可以检查您的TD文本,与您想要的文本进行比较,获得TR父级并找到操作按钮。您可以使用纯XPath(这不是最佳方式)或使用您使用Selenium的语言来完成。

例如,在C#中:

Browser.FindElements(By.TagName("tr"))
    .First(x => x.Text.Contains("my text to compare"))
    .FindElement(By.TagName("input"))
    .Click();

它将在所有“tr”标签中搜索包含文本“我要比较的文本”的标签,它只选择匹配的第一个结果,之后将选择其中的输入标签。当然,您可以更改标签名称或选择器,您需要根据需要调整代码

使用纯XPath选择器可以做同样的事情:

$x("//td[contains(text(), 'my text to compare')]/..")

将包含所需文本的td并获取父tr。通过它,您可以导航到所需的标签并选择您的操作按钮。