Как я могу ждать ожидаемое значение на странице корзины magento с селеном - PullRequest
1 голос
/ 03 июля 2019

Я пытаюсь подождать с селеновым веб-драйвером рассчитанные итоговые суммы на странице корзины, прежде чем инициировать следующее событие клика.Но я получил исключение.У меня нет другого элемента на странице, который я мог бы ждать.Я думаю, что действительно легко найти решение для опытных разработчиков, но я не тот.

Я использую эту команду ожидания:

wait.until(ExpectedConditions.textToBePresentInElementLocated(By.cssSelector(".grand.totals .price"), "35,75 €"));`

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

<tr class="grand totals">
    <th class="mark" scope="row">
        <strong data-bind="i18n: title">Bestellsumme</strong>
    </th>
    <td data-bind="attr: {'data-th': title}" class="amount" data-th="Bestellsumme">
        <strong><span class="price" data-bind="text: getValue()">35,75&nbsp;€</span></strong>
    </td>
</tr>

Это исключение я получил.

org.openqa.selenium.ElementNotVisibleException: элемент не interactable (информация Session: хром = 75.0.3770.100) (информация Driver: chromedriver = 74.0.3729.6 (255758eccf3d244491b8a1317aa76e1ce10d57e9-ссылки / отраслевые головки / 3729 @{# 29}), платформа = Windows NT 10.0.17134 x86_64) (ВНИМАНИЕ: Сервер не предоставил никакой информации о трассировке стека) Длительность команды или время ожидания: 0 миллисекунд Информация о сборке: версия: '3.141.59', версия: 'e82be7d358', время: '2018-11-14T08: 17: 03' Системная информация: хост: 'MARCEL-THINK', ip: '10 .110.12.3 ', os.name:' Windows 10 ', os.arch:' amd64 ',os.version: '10 .0 ', java.version: '11 .0.3' Информация о драйвере: org.openqa.selenium.chrome.ChromeDriver

1 Ответ

0 голосов
/ 03 июля 2019

Кажется, вы были близки. Текст 35,75 € содержит символ пробел между ними и находится внутри тега <span>. Таким образом, вы можете использовать любую из следующих стратегий локатора :

  • cssSelector:

    new WebDriverWait(driver, 20).until(ExpectedConditions.textToBePresentInElementLocated(By.cssSelector("tr.grand.totals td.amount>strong>span.price"), "35,75"));
    
  • xpath

    new WebDriverWait(driver, 20).until(ExpectedConditions.textToBePresentInElementLocated(By.xpath("//tr[@class='grand totals']//td[@class='amount']/strong/span[@class='price']"), "35,75"));
    
...