потому что надо специальный текст выделять как код чтобы каждый символ интерпретировался правильно с помощью ```
Вы наш поставщик крутых xpath! Спасибо!
Этот поправился через предыдущие.
.//*[@id='sideRight']/div[count(descendant::*[contains(text(),'Брокер онлайн')]) > 0]
.//*[@id='content']//input | .//*[@id='content']//select
такого вида код логически вроде бы верно что подчеркивает, но пугает когда IDE файл в дереве тоже подчеркивает как некорректный
By.xpath("//tr[@id][" + i + "]/td[2]/div/b/a"))
Да, у нас есть задача про динамические локаторы. И это одна из приоритетных сейчас задач. Мы думаем, как лучше сделать.
Ну и xpath у вас. Круто! спасибо за примеры.
Наше дело поправить, но есть вопрос - оптимальны ли Ваши локаторы? Тут и завязки на child parent, и текст. Разумеется, может система так написана. Но об этом всегда стоит задумываться.
Согласен, не оптимальны. Но структура html диктует такие условия) С другой стороны, время потраченное на поиск по такому xpath по отношению к времени отклика системы не значительно
Исправили вроде ошибки для локаторов. Теперь не будут подсвечиваться
Так же добавили сообщение про динамические локаторы - к сожалению пока решили с ними ничего не делать. Это достаточно сложно, а порой и не возможно, определить, какое значение переменной внутри, по этому решили сделать решение, когда мы просто выводим Вам сообщение, что динамические лоакторы не поддерживаются. Возможно мы найдем какое-то разумное решение в будущем.
Обновление выложено, в ближайшее время должно быть доступно.
ещё не обновлялся, возможно уже исправлено, но на всякий случай
.//div[@class='phone_number'][text()!='']
Да, ошибку выдавать не будет.
В ближайшее время мы постараемся еще немного модифицировать проверку xpath, есть ряд недочетов, которые нам известны. Как например - сейчас для сложных локаторов(как у Вас) возможны проблемы с определением места ошибки во время написания, а так же с подсказками для исправления. Дело в том, что у xpath конечно очень и очень много возможных функций, которые сложно предусмотреть. Но сейчас мы над этим работаем.
Добавили поддержку Selenide (specially for @asolntsev)
Из того, что добавили:
- преднастроенный проект для selenide
- code complete, проверку ошибок в локаторах для методов типа $ (вообщем всё, что было для обычных элементов селениума)
Думается, что в будущем будем и дальше развивать эту интеграцию, так что если есть идеи - пишите.
Как установить или вообще про плагин прочитать можно здесь
Если кому-то понравится - можно тут ставить оценки и оставлять комментарии
Всё вроде как уже доступно для скачивания(или апдейта, если у кого-то уже установлен плагин)
Об ошибках, идеях - сообщаем
@FindBy(css = "a[href='/user/logout']")
Подчёркнут первый символ “/” и пишет “Атрибут не может быть пустым”
Спасибо, исправим!!
Исправил, скоро доедет!
@FindBy(css = “tbody > tr:nth-child(1) > td:nth-child(1)”)
Этот селектор подсвечен как Not parsable selector, я что-то не так делаю? Он работает быстренько 40 милисекунд
Наоборот, благодаря плагинам и селениду, автоматизаоры разучатся программировать и тем ценне будут те, кто умеет
Для такого локатора отображается ошибка “Id value contains not valid symbol”
$(String.format("l**i[**data-id='%s']", id));
Спасибо за ценные комментарии! исправим! Сразу все варианты не учтешь
А есть ли возможность добавить проверку на дубликаты локаторов которые описал?
Подскажите пожалуйста, какие сочетания клавишь для подсказок раздела “Помощь в написании локаторов.”, перепробовал и alt+space и shift и comand, чето как-то оно ничего мне не подсказывает
Спасибо…
Дубликаты? То есть где-то есть локаторы в проекте, и вы не хотите такие же? Кажется, это вполне себе реальный случай, особенно если использовать что-то типа htmlElements.