2017-07-05 9 views
1

私はいくつかの列があるテーブルを持っていますが、私がしようとしているのは特定のエンティティの編集リンクを見つけることです。次のように エンティティ名と編集リンクが識別されますテーブル内の要素を見つける - セレン

@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

'html'を投稿できますか?このような状況への一般的なアプローチは、xpathを使用して行項目を検索し、基本的にツリーをバックアップして行を取得し、別の列に存在する関連する編集ボタンを取得することです。 – mrfreester

答えて

0

解決方法1:

あなたはxpathに前方軸や祖先を使用することができます。

前方
//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'] 

これはおそらく、あなたが動的なセレクタをしたいわけではなくなりますが、この操作を行うことができ、そのエンティティのためのエンティティおよび編集ボタンが含まれていtrがあると仮定すると、 @FindByので、このような何か:

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

解決方法2:

あなたが探しているエンティティがentityNameListにあり、それらが一致すると仮定して、entityEditLinkListのインデックスを使用して正しいボタンをクリックします。これは少し正確ではないので、私はそれをお勧めしません。

+0

私は2番目のソリューションを使用し、これまでのところ私のために動作します。ありがとう。 –

関連する問題