В соответствии с 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
. Я хотел бы сделать это как предложение для пользователя, чтобы пользователь мог подтвердить это для исправления. Если в слове содержится предложение об исправлении, отобразите маленькую кнопку рядом с этим словом, как только пользователь нажмет на него, отобразятся возможные варианты, когда пользователь нажмет на опцию и внесет исправление. Чтобы сделать это возможным, я думаю, что требуется специальный элемент управления для поля ввода, который преобразует отдельные слова в отдельные элементы html (span или div). Он может быть построен из html div и невидимого элемента ввода (он будет иметь обработчики фокуса и клавиатуры). Когда пользователь нажимает пробел, на сервере необходимо проверить новое слово, просто отправьте запрос AJAX с новым словом и отобразите предложения по исправлению, если таковые имеются.