Selenium单击不同的ID链接

时间:2017-01-12 14:39:48

标签: java selenium

如何在Selenium Framework中点击具有不同id属性值的不同元素? 链接ahref值是相同的文本。

<li>
<a id="abc_differentName_1_default_fun" href="javascript:startClient('abc_differentName_1', 'default', 'fun');">Start</a>
</li>

<li>
<a id="abc_differentName_2_default_fun"   href="javascript:startClient('abc_differentName_2', 'default', 'fun');">Start</a>
</li>

<li>
<a id="xyz_differentName_xyz_default_fun" href="javascript:startClient('xyz_differentName_xyz', 'default', 'fun');">Start</a>
</li>

我不想创建每个链接的单击方法。

我的问题是我不想创建每个链接的单击方法。我想要一次点击方法取决于id名称。可以创建一个单击方法示例:void clickByIdName(String idName)?? 取决于我点击的链接,它将打开新窗口(其他页面对象)。

非常感谢提前。

4 个答案:

答案 0 :(得分:0)

您可以使用css选择器查​​找id包含以下内容的所有元素:

driver.findElements(By.cssSelector("[id*=_differentName_]"))

如果你想要void clickByIdName(String idName)

void clickByIdName(String idName) {
    driver.findElement(By.Id(idName)).click();
}

答案 1 :(得分:0)

如果页面上有多个类似文本的链接,您可以使用id值来选择每个元素,如下所示:

driver.findElement(By.cssSelector("a#abc_differentName_1_default_fun")).click();
driver.findElement(By.cssSelector("a#abc_differentName_2_default_fun")).click();
driver.findElement(By.cssSelector("a#xyz_differentName_xyz_default_fun")).click();

答案 2 :(得分:0)

您不必使用这些ID属性值来定位链接元素。有一种更好的方法 - 链接文本定位器。您可以找到包含Start链接文本的所有链接,并通过索引选择您需要的链接:

List<WebElement> links = driver.findElements(By.linkText("Start"));
links.get(0).click();

答案 3 :(得分:0)

不确定这里的确切问题是什么,但这些问题出在哪里:

deploy.zip
  - deploy/
     - appspec.yml
     - app.jar
     - ...