У меня возникла ошибка при поиске элемента с использованием Xpath - PullRequest
0 голосов
/ 04 октября 2018

Имея ниже HTML.Я хочу выбрать определенный элемент, используя xpath

<tbody>
    <tr role="row" id="gridview-1034-record-ext-record-1" data-boundview="gridview-1034" data-recordid="ext-record-1" data-recordindex="0" class="x-grid-row x-grid-data-row x-grid-row-selected x-grid-row-focused" tabindex="-1">
        <td role="gridcell" class="x-grid-cell x-grid-td x-grid-cell-gridcolumn-1010 x-grid-cell-first x-unselectable " id="ext-gen1139">
        <div unselectable="on" class="x-grid-cell-inner " style="text-align:left;">03 Oct 2018</div>
        </td>
        <td role="gridcell" class="x-grid-cell x-grid-td x-grid-cell-gridcolumn-1013 x-unselectable " id="ext-gen1140">
        <div unselectable="on" class="x-grid-cell-inner " style="text-align:left;">Sales Quotation</div>
        </td>
        <td role="gridcell" class="x-grid-cell x-grid-td x-grid-cell-gridcolumn-1016 x-unselectable " id="ext-gen1141">
        <div unselectable="on" class="x-grid-cell-inner " style="text-align:left;">000079</div>
        </td><td role="gridcell" class="x-grid-cell x-grid-td x-grid-cell-gridcolumn-1019 x-unselectable " id="ext-gen1142">
        <div unselectable="on" class="x-grid-cell-inner " style="text-align:left;">ABC Bearings Ltd.</div>
        </td><td role="gridcell" class="x-grid-cell x-grid-td x-grid-cell-gridcolumn-1022 x-unselectable " id="ext-gen1143">
        <div unselectable="on" class="x-grid-cell-inner " style="text-align:left;">&nbsp;</div></td><td role="gridcell" class="x-grid-cell x-grid-td x-grid-cell-gridcolumn-1025 x-unselectable " id="ext-gen1144"><div unselectable="on" class="x-grid-cell-inner " style="text-align:right;">8,000.00</div>
        </td><td role="gridcell" class="x-grid-cell x-grid-td x-grid-cell-gridcolumn-1028 x-unselectable " id="ext-gen1145">
        <div unselectable="on" class="x-grid-cell-inner " style="text-align:left;">No</div></td>
        <td role="gridcell" class="x-grid-cell x-grid-td x-grid-cell-gridcolumn-1031 x-grid-cell-last x-unselectable " id="ext-gen1146">
        <div unselectable="on" class="x-grid-cell-inner " style="text-align:left;">Approved</div>
        </td>
        </tr>
</tbody>

Я не могу найти элемент ниже и щелкнуть по нему с помощью XPath, используя приведенный ниже код.

Помощь будет высоко ценится

element(by.xpath('//tbody/tr/td/div')).click();
                    expect(div.getText()).toBe('000079');

Ответы [ 5 ]

0 голосов
/ 04 октября 2018
String Str = "000079";
            List<WebElement> listEle = driver.findElements(By.Xpath("Your Xpath"));
            System.out.println("List Printer " + listEle);
            Iterator<WebElement> iter = listEle.iterator();
            System.out.println("Iterator Print" + iter);
            while (iter.hasNext()) {
                WebElement we = iter.next();
                System.out.println("Web Element We " + we.getText());
                if (we.getText().equals(str)) {
                    we.click();
                }
            }
0 голосов
/ 04 октября 2018

Элемент с текстом '000079' присутствует в tr [1] td [3].Вы можете использовать следующее решение:

 WebElement e1= driver.findElement(By.xpath("//tbody/tr[1]/td[3]/div[1]"));
    String Str=e1..getText();
    if(Str="000079")
    { System.out.println("Text matched"+Str);
e1.click();
    }
    else
    {
    System.out.println("Text Mismatched"+Str);
    }
0 голосов
/ 04 октября 2018

Чтобы найти элемент с текстом как 000079 , вы можете использовать следующее решение:

  • XPath :

    //td[starts-with(@id,'ext-gen')]/div[@class='x-grid-cell-inner' and contains(.,'000079')]
    
  • Строка кода:

    element(by.xpath("//td[starts-with(@id,'ext-gen')]/div[@class='x-grid-cell-inner' and contains(.,'000079')]")).click();
    
0 голосов
/ 04 октября 2018

Я согласен с ответом @Faisal Maqbool.Я бы немного укоротил xpath следующим образом:

element = driver.findElement(By.xpath("//div[contains(text(), 'div text you want')]")); element.click();

Если вы можете попытаться выбрать точный элемент напрямую, усложните xpath, только если сможете найтидругого варианта нет.

0 голосов
/ 04 октября 2018

Вы можете использовать contains(text(),'...') для соответствия нужного вам div и затем щелкнуть по нему.

element = driver.findElement(By.xpath("//tbody/tr/td/div[contains(text(), 'div text you want')]"));
element.click()
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...