在表中查找元素 - 硒

时间:2017-07-05 15:07:27

标签: java angularjs selenium selenium-webdriver

我有一个表格,我有几列,但我想要做的是找到某个实体的编辑链接。 实体名称和编辑链接标识如下:

@FindBy(css = "div#entity_data_manager_table_cell_name")
public List<WebElement> entityNameList;
@FindBy(css = "button#entity_data_manager_table_item_action_edit")
public List<WebElement> entityEditLinkList;

识别与某个实体名称对应的编辑链接的最佳方法是什么?

1 个答案:

答案 0 :(得分:0)

解决方案1:

您可以在xpath中使用前向轴或祖先。假设有tr包含您的实体和该实体的编辑按钮,您可以这样做:

//div[@id='entity_data_manager_table_cell_name'][contains(text(),'some identifying text)]/ancestor::tr//button[@id='entity_data_manager_table_item_action_edit']

前进轴版本:

//tr[descendant::div[@id='entity_data_manager_table_cell_name'][contains(text(),'some identifying text)]]//button[@id='entity_data_manager_table_item_action_edit']

这可能意味着你需要一个动态选择器,而不是@FindBy,所以这样的东西:

protected WebElement getEntityEditButtonElement(string entity)
{
    return driver.findElement(By.xpath(/*xpath from above plugging in the identifiable text*/));
}

解决方案2:

找到您正在寻找的实体所在的entityNameList,并假设它们匹配,请在entityEditLinkList中使用该索引点击正确的按钮。这有点不太精确,所以我不推荐它。