Обычно эта ошибка возникает, когда мы отправляем заголовок после эха или печати. Если эта ошибка возникает на определенной странице, убедитесь, что страница не выполняет эхо-сигналы перед вызовом 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()
, даже не с помощью пробела или новой строки
, если img является дочерним элементом td, попробуйте это
//td[@class="text-button menu-button-active"]//img
, если img является элементом sibiling из td, попробуйте это
//td[@class="text-button menu-button-active"]/following-sibling::img
. Надеюсь, что это поможет:)
Если вам нужен только элемент «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
В соответствии с 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();
Но ваша главная проблема заключается в несовместимости между версией двоичных файлов, которые вы используете используя следующее:
Решение:
@Test
. contains(@class,'text-button')
и не является хорошей стратегией в соответствии с HTML. Оформить мой обновленный ответ и сообщить мне результат.
– DebanjanB
13 July 2018 в 09:19