2017-05-05 51 views
0

我想添加一些數據,然後檢查它是否存在於頁面上。問題在於,用螢火蟲檢查UI時看起來非常難看。它使用角度來完成。我與開發人員交談,他爲一些元素添加了一些明智的ID。然而,其中一些,特別是桌子元素有舊的命名。在添加數據之後,我想要做一個聲明元素存在於表中。這是我的元素:如果所有元素具有相同的ID,則在表格中查找元素

<div id="entity_data_manager_table_cell_code" class="d3-data-table-cell code" _ ngcontent-mrb-1="" ng-reflect-class-name="d3-data-table-cell code" ng- 
reflect-id="entity_data_manager_table_cell_code"> Test_Code </div> 

的問題是,表中的所有元素都具有ID =「entity_data_manager_table_cell_code」。有沒有辦法解決這個問題,還是解決方案重命名頁面上的所有元素?

我正在使用Selenium和Java進行測試。

+0

您應該嘗試通過xpath查找元素。 – DCON

+0

這真的取決於你在找什麼和如何。你正在尋找一個特定的字符串出現在表中的某個單元格中嗎?或者它足夠好以至於表中的字符串存在於任何地方或?您應該爲您的問題添加更多詳細信息,並提供您要添加的文本以及您希望找到的文本的具體示例。請顯示您嘗試過的代碼和結果,錯誤消息和/或爲什麼它不起作用。 – JeffC

回答

0

ID是獨一無二的。由於id不能重複,因此您需要替換/重命名這些重複項。

在所有情況下,重複的id是禁止的。

希望能幫到你!

0

如果您的表位於標籤內部;你可以嘗試下面的代碼;該檢查通過一個表格內每一個元素,這樣你就不必擔心有相同ID的元素:

List<WebElement> storeRows = storesTable.findElements(By.cssSelctor("table tr")); 

for(WebElement row : storeRows){ 

WebElement column = storeRows.findElement(By.agNamE("td")); 

for(int i=0; i<column.size();i++{ 

if(column.get(i).getText().equals("value of your element"){ 

    //then do your action here 

    } 

    } 
} 
0

另一種解決方案是試圖通過以外的ID 另一標識符來定位你的元素的XPath例子,因爲它爲您提供了很多有用的功能,以找到您的元素EX(父元素,子元素,...等)

下面的網址是非常有用的,如果你會使用XPath方法

http://www.guru99.com/xpath-selenium.html

0

如果文本不同,並且您知道可以使用XPATH定位器的預期文本。

String xpath = "//*[text() = 'YOUR_TEXT']" 
WebElement e = driver.findElement(By.Xpath(xpath)); 
0

這是我用於測試的代碼。到目前爲止它已通過,但如果有人有任何輸入,請告訴我:

public void testAddNewEntity() { 
    String generatedEntityCode = RandomStringUtils.randomAlphanumeric(20).toUpperCase(); 
    String generatedEntityName = RandomStringUtils.randomAlphanumeric(10).toUpperCase(); 

    EntitiesPage entitiesPage = new EntitiesPage(browser); 

    entitiesPage.newEntity.click(); 
    entitiesPage.codeInputField.sendKeys(generatedEntityCode); 
    entitiesPage.nameInputField.sendKeys(generatedEntityName); 
    entitiesPage.parentCodeInputField.sendKeys("Next"); 
    entitiesPage.streetAddressInputField.sendKeys("Princess Street"); 
    entitiesPage.numberAddressInputField.sendKeys("31"); 
    entitiesPage.cityAddressInputField.sendKeys("London"); 
    entitiesPage.countryAddressInputField.sendKeys("UK"); 
    entitiesPage.zipInputField.sendKeys("312"); 

    entitiesPage.submitEntityButton.click(); 

    List<WebElement> codes = entitiesPage.entityTable.findElements(By.id("entity_data_manager_table_cell_code")); 
    List<WebElement> names = entitiesPage.entityTable.findElements(By.id("entity_data_manager_table_cell_name")); 

    Iterator<WebElement> rows = codes.iterator(); 
    Iterator<WebElement> nameRows = names.iterator(); 
    while (rows.hasNext()) { 
     WebElement row = rows.next(); 
     if (row.getText() == generatedEntityCode) { 
      Assert.assertEquals(nameRows.next().getText(), generatedEntityName); 
     } 

    } 
} 
相關問題