Как последовательно нажимать на значок через xpath с помощью Selenium - PullRequest
0 голосов
/ 09 мая 2018

См. Ниже выражение xpath, скопированное из инструментов разработчика.

//*[@id="parentDiv"]/table/tbody/tr[1]/td[8]/div/profile-link-column/a/i

Я хочу щелкнуть данные восьмой таблицы в первой строке (на самом деле это небольшая иконка), так что это отлично работает 3 раза из 10.

Может кто-нибудь предложить более надежный подход?

Это мой HTML:

<td>
    <!--anchor-->
    <div class="animated-slide-in au-enter-active">
        <profile-link-column device-id="${value.value}" class="au-target" au-target-id="395">
            <a click.trigger="viewProfile()" class="au-target" au-target-id="55">
                <i class="fa fa-newspaper-o"></i>
            </a>
        </profile-link-column>
    </div>
    <!--anchor-->
    <!--anchor-->
    <!--anchor-->
    <!--anchor-->
    <!--anchor-->
</td>

Ответы [ 2 ]

0 голосов
/ 09 мая 2018

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

new WebDriverWait(driver, TimeSpan.FromSeconds(10)).Until(ExpectedConditions.ElementToBeClickable(By.XPath("//td/div[@class='animated-slide-in au-enter-active']/profile-link-column[@class='au-target']/a[@class='au-target']/i[@class='fa fa-newspaper-o']"))).Click();
0 голосов
/ 09 мая 2018

Используйте css здесь

driver.manage().timeouts().implicitlyWait(10, TimeUnit.SECONDS);
driver.findElement(By.cssSelector("i.fa.fa-newspaper-o")).click

проверьте, работает ли он нормально, если он не работает, затем вставьте ошибку. Если это связано с ошибкой видимости, то, я думаю, проблема в том, что <profile-link-column device-id="${value.value}" class="au-target" au-target-id="395"> <a click.trigger="viewProfile()" class="au-target" au-target-id="55"> <i class="fa fa-newspaper-o"></i> </a> </profile-link-column> скрыто в вашем html.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...