Как построить xpath щелкнуть элемент с текстом как действие

Обычно эта ошибка возникает, когда мы отправляем заголовок после эха или печати. Если эта ошибка возникает на определенной странице, убедитесь, что страница не выполняет эхо-сигналы перед вызовом start_session().

Пример непредсказуемой ошибки:

 <?php //a white-space before <?php also send for output and arise error
session_start();
session_regenerate_id();

//your page content

Еще один пример:

<?php
includes 'functions.php';
?> <!-- This new line will also arise error -->
<?php
session_start();
session_regenerate_id();

//your page content

Вывод: не выводить символ перед тем, как вызывать функции session_start() или header(), даже не с помощью пробела или новой строки

0
задан DebanjanB 13 July 2018 в 07:46
поделиться

4 ответа

, если img является дочерним элементом td, попробуйте это

//td[@class="text-button menu-button-active"]//img

, если img является элементом sibiling из td, попробуйте это

//td[@class="text-button menu-button-active"]/following-sibling::img

. Надеюсь, что это поможет:)

0
ответ дан Bhargav Marpu 17 August 2018 в 13:28
поделиться

Если вам нужен только элемент «td», то получите его с помощью css, например:

WebElement actionsElement = driver.findElement(By.cssSelector("div.toolbar td"));
actionsElement.click();

. Если вы хотите щелкнуть по внутреннему элементу изображения, используйте как:

WebElement imageElement = driver.findElement(By.cssSelector("div.toolbar td img"));
imageElement.click();

Надеюсь, что вам поможет.

Использование xpath: для элементов «td» для действий:

//td[@title='Actions']

Для внутри img elemnt:

//td[@title='Actions']//img
0
ответ дан dangi13 17 August 2018 в 13:28
поделиться

В соответствии с HTML вы можете использовать следующий xpath :

//td[@class='text-button menu-button-active' and @title='Actions'][normalize-space()='Actions']

Обновить:

Это сообщение об ошибке ...

org.openqa.selenium.NoSuchElementException: Unable to locate element: //div[@class='toolbar']//td[text()='Actions']
Build info: version: '3.13.0', revision: '2f0d292', time: '2018-06-25T15:32:14.902Z'
 os.name: 'Windows 10', os.arch: 'amd64', os.version: '10.0', java.version: '1.8.0_131'
Driver info: org.openqa.selenium.firefox.FirefoxDriver

... подразумевает, что GeckoDriver не смог найти элемент через стратегию локатора как //div[@class='toolbar']//td[text()='Actions'].

В соответствии с HTML, который вы поделили, вам необходимо вызвать waiter через WebDriverWait , и вы можете использовать следующее решение:

new WebDriverWait(driver, 20).until(ExpectedConditions.elementToBeClickable(By.xpath("//td[@class='text-button menu-button-active' and @title='Actions'][normalize-space()='Actions']"))).click();

Но ваша главная проблема заключается в несовместимости между версией двоичных файлов, которые вы используете используя следующее:

  • Ваша версия JDK - это 1.8.0_131, которая довольно древняя.

Решение:

  • Обновить JDK до последних уровней JDK 8u171 .
  • Выполнить свой @Test.
0
ответ дан DebanjanB 17 August 2018 в 13:28
поделиться
  • 1
    пробовал это уже ... не работал – Prajkta 13 July 2018 в 07:29
  • 2
    попробовал это // td [contains (@ class, 'text-button') и @ title = 'Actions'] [normalize-space () = 'Actions'] .bt did't work – Prajkta 13 July 2018 в 07:41
  • 3
    Мой ответ не содержит contains(@class,'text-button') и не является хорошей стратегией в соответствии с HTML. Оформить мой обновленный ответ и сообщить мне результат. – DebanjanB 13 July 2018 в 09:19
0
ответ дан DebanjanB 6 September 2018 в 09:28
поделиться
Другие вопросы по тегам:

Похожие вопросы: