Как выделить часть текста/текст средствами selenium?
Никак. Таких средств у Селениума нет.
Если это инпут то можно Keys.chord(Keys.Shift,Keys.RIGHT)
Можно с помощью Actions сделать нечто подобное, но надо заморочится.
а можно по подробнее?
я знаю что можно через drag and drop, но как получить часть текста как webelement?
“как получить часть текста как webelement?” вот этого не понял вообще )
Если вам нужно буквально выделить часть текста и скопировать в буфер, а потом вставить куда-то, то с помощью Actions вы можете это сэмулировать примерно как-то так:
moveByOffset(x1,y1).clickAndHold().moveByOffset(x2,y2).release().keyDown(Keys.Ctrl).keyDown(Keys.C).keyUp(Keys.C).keyUp(Keys.Ctrl).moveToElement(target).keyDown(Keys.Ctrl).keyDown(Keys.V).keyUp(Keys.V).keyUp(Keys.Ctrl)
@Andreww а уточните пожалуйста под “выделить” что вы имеете в виду ? напр. Extract a substring by matching a regular expression. : String Operation « Regular Expressions « Java это выделить или нет ?
а какова цель этого всего ? если есть конкретное условие, к примеру выбрать первых 3 символа…ну тогда возьмите весь текст и обрежьте средствами ЯП на котором пишите, во всех остальных вариантах алгоритм будет примерно такой же
выделить текст в браузере, провести форматирование текста (сделать его жирным, поменять шрифт и т.д.) и проверить это…
используйте клавиатуру, то как бы Вы делали с помощью клавиатуры и класс Actions:
- используя moveByOffset:
Actions actions = new Actions(driver); actions.moveToElement(element, x1, y1) .clickAndHold() .moveByOffset(x2, y2) .release() .perform();
- Используя клавиатуру:
clickAndHold + Keys.CTRL+ Keys.Shift + Keys.ArrowRight + Release + Perform что-то такое
давайте еще раз, у вас есть веб морда, сорци которой лежат где то на хостинге… ок, и вы хотите что то в этом поменять ))) у всего адекватного мира есть 2 варианта решения
- сделать изменения в коде
- делать это с помощью заинжекченых жава скриптов (это таки можно сделать через вызов скрипта через WD)
но у меня остается последний вопрос, если у вас есть плейн текст без форматирования (ну так, к примеру), и вам нужно выделить жирным шрифтом (значение из потолка) 8 слово в 3 абзаце то сомневаюсь что таковое можно. и даже если вы с помощью Екшнов чегото сможете физичесски выделить то дальше с этим сделать ничего нельзя )))
другой вариант это если у вас …не помню как называется…панель форматирования html текста…тут согласен, все пляски с бубном описаны выше будут работать. сам с таким стыкался…только же этого нет в последних 12 ответах и описании темы ))
Скорее всего у вас какой-нибудь WYSIWYG-редактор.
Я в своё время решал аналогичную проблему с MediumEditor так:
- Очищал editable-элемент (обычно div)
- Отправлял в него несколько уникальных фраз без пробелов, разделяя их enter
- т.к. MediumEditor оборачивает эти фразы в
<p></p>
то выделял их двойным кликом
Картинка для лучшего понимания:
https://i.imgur.com/GxebIv7.png
Ну а после этого дожидался всплывашки с форматированием и нажимал нужные кнопки, проверяя результат.
спасибо
У WYSIWYG чаще всего API есть, который можно дергать через jsExecutor