Как выделить часть текста/текст средствами selenium?

Как выделить часть текста/текст средствами 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 символа…ну тогда возьмите весь текст и обрежьте средствами ЯП на котором пишите, во всех остальных вариантах алгоритм будет примерно такой же

1 лайк

выделить текст в браузере, провести форматирование текста (сделать его жирным, поменять шрифт и т.д.) и проверить это…

используйте клавиатуру, то как бы Вы делали с помощью клавиатуры и класс Actions:

  1. используя moveByOffset:
    Actions actions = new Actions(driver); actions.moveToElement(element, x1, y1) .clickAndHold() .moveByOffset(x2, y2) .release() .perform();
  2. Используя клавиатуру:
    clickAndHold + Keys.CTRL+ Keys.Shift + Keys.ArrowRight + Release + Perform что-то такое

давайте еще раз, у вас есть веб морда, сорци которой лежат где то на хостинге… ок, и вы хотите что то в этом поменять ))) у всего адекватного мира есть 2 варианта решения

  1. сделать изменения в коде
  2. делать это с помощью заинжекченых жава скриптов (это таки можно сделать через вызов скрипта через WD)
    но у меня остается последний вопрос, если у вас есть плейн текст без форматирования (ну так, к примеру), и вам нужно выделить жирным шрифтом (значение из потолка) 8 слово в 3 абзаце то сомневаюсь что таковое можно. и даже если вы с помощью Екшнов чегото сможете физичесски выделить то дальше с этим сделать ничего нельзя )))
    другой вариант это если у вас …не помню как называется…панель форматирования html текста…тут согласен, все пляски с бубном описаны выше будут работать. сам с таким стыкался…только же этого нет в последних 12 ответах и описании темы ))

Скорее всего у вас какой-нибудь WYSIWYG-редактор.
Я в своё время решал аналогичную проблему с MediumEditor так:

  1. Очищал editable-элемент (обычно div)
  2. Отправлял в него несколько уникальных фраз без пробелов, разделяя их enter
  3. т.к. MediumEditor оборачивает эти фразы в <p></p> то выделял их двойным кликом

Картинка для лучшего понимания:
https://i.imgur.com/GxebIv7.png

Ну а после этого дожидался всплывашки с форматированием и нажимал нужные кнопки, проверяя результат.

спасибо

У WYSIWYG чаще всего API есть, который можно дергать через jsExecutor