Piszę testy selenu w Javie, gdzie mój skrypt po pierwsze prowadzi zapytanie przed systemem źródłowym i zgromadzenie oczekiwanych rezultatów. W tym przykładzie moje zapytanie zwraca 4 numery członkowskie, które wówczas chcą odnieść się do tabeli na internetu UI, aby zapewnić, że te 4 numery członkowskie pojawią się na stole. Muszę też zapewnić, że nie więcej lub mniej niż te 4 numery użytkowników pokazuje na interfejsie użytkownika. Zapytanie może powrócić do powiedzenia 3 lub 5 numerów członkowskich, gdy zmienia się dane systemu źródłowego, więc potrzebuję mojego testu, aby być wystarczająco inteligentnym, aby wiedzieć, ile numerów członków poszukuje na podstawie wyników zapytania.

Myślę, że moje podejście do stwierdzenia wyników zapytania przeciwko interfejsie użytkownika jest uzyskanie obu danych ustawiających w tablicy i prowadzić aserna równe, aby zapewnić sobie nawzajem.

Mój UI jest następujący:

<tbody>
        <tr data-ng-repeat="member in searchresult" class="ng-scope odd" role="row">
            <td class="ng-binding sorting_1">27002</td>
            <td class="ng-binding">Test</td>
            <td class="ng-binding">Test</td>
            </td>
        </tr><tr data-ng-repeat="member in searchresult" class="ng-scope even" role="row">
            <td class="ng-binding sorting_1">55691</td>
            <td class="ng-binding">Standard</td>
            <td class="ng-binding">PGY2 TESTED</td>
            </td>
        </tr><tr data-ng-repeat="member in searchresult" class="ng-scope odd" role="row">
            <td class="ng-binding sorting_1">58716</td>
            <td class="ng-binding">Standard</td>
            <td class="ng-binding">PGY3 TESTED</td>
            </td>
        </tr><tr data-ng-repeat="member in searchresult" class="ng-scope even" role="row">
            <td class="ng-binding sorting_1">95362</td>
            <td class="ng-binding">Standard</td>
            <td class="ng-binding">STUDENT tested</td>
            </td>
        </tr></tbody>
</table>

Możesz zobaczyć 4 numery członkowskie zawsze pokazują w klasie "Sortowanie oprawy NG_1". Zastanawiam się, jak mogę pisać lokalizatorów, aby chwycić każdego z nich i umieścić je w tablicy.

Otwórz również, aby usłyszeć różne podejścia, jeśli tak nie jest, aby przejść do tego czeku.

0
Matt 5 czerwiec 2018, 06:57

3 odpowiedzi

Najlepsza odpowiedź

Zadzwoń driver.findElements(), aby uzyskać wszystkie TDS w kolumnie pierwszej tabeli.

String locator = "tbody > tr[data-ng-repeat='member in searchresult'] > td.sorting_1";

List<WebElement> tds = driver.findElements(By.cssSelector(locator));

ArrayList<String> memberNums = new ArrayList<String>()

for(WebElement ele : tds) {
  memberNums.add(ele.getText());
}
2
yong 5 czerwiec 2018, 04:33

Oto kod, który jest iteruje każdy wiersz tabeli. Mam nadzieję, że teraz możesz się z tym odnosić

    List<WebElement> rows = driver.findElements(By.Id("DataTables_Table_0"));


    // Now using Iterator we will iterate all elements
    Iterator<WebElement> iter = rows.iterator();

    // this will check whether list has some element or not
    while (iter.hasNext()) {

        // Iterate one by one
        WebElement item = iter.next();

        // get text
        String label = item.getText();
1
Prany 5 czerwiec 2018, 04:24

Załaduje wszystkie wartości wewnątrz TD.

    List<WebElement> tableElements =  driver.findElements(By.xpath("//tbody//*");

    ArrayList<String> tdDetails = new ArrayList<String>();

    for (WebElement tableElement: tableElements ) {
             tdDetails.add(tableElement.getText());

     }

Jeśli chcesz uzyskać całą wartość w klasie TD = "Sortowanie ng-wiążące_1

Trzeba postępować zgodnie z poniższymi krokami.

String attributeValue = "ng-binding sorting_1";
List<WebElement> tableElements =  driver.findElements(By.xpath("//tbody//*");

        ArrayList<String> tdDetails = new ArrayList<String>();

        for (WebElement tableElement: tableElements ) {

                if(tableElement.getAttribute("class")!=null && tableElement.getAttribute("class")==attributeValue){

                      tdDetails.add(tableElement.getText());
                }


         }
1
Balakrishnan 5 czerwiec 2018, 08:52