Как найти элемент, используя имя класса, начинающееся с текста в Selenium - PullRequest
0 голосов
/ 24 октября 2018

Ниже приведено описание элемента:

<div class="css-control-textinput-122aa"><input type="text" aria-required="true" disabled="" required=""</div>

В приведенном выше классе есть имя css-control-textinput-122aa, но здесь 122aa не является фиксированным значением, оно изменяется.Итак, как мне найти элемент, используя className, начиная только с css-control-textinput?

Ниже кода, который я пробовал, но он не работает:

@FindBy (className = "css-fauxcontrol-textinput-^")
List<WebElement> dataSourceName;

Ответы [ 2 ]

0 голосов
/ 24 октября 2018

Возможно, есть проблема с HTML, которым вы поделились.Тег <input> должен был быть закрыт >, а фактический HTML должен быть:

<div class="css-control-textinput-122aa"><input type="text" aria-required="true" disabled="" required=""></div>

В этом случае простое определение <div> может не помочьнам, но нам нужно пройти до дочернего узла <input>, и вы можете использовать любое из следующих решений:

  • css:

    @FindBy (css  = "div[class^='css-control-textinput-']>input[type='text']")
    List<WebElement> dataSourceName;
    
  • xpath:

    @FindBy (xpath  = "//div[starts-with(@class,'css-control-textinput-')]/input[@type='text']")
    List<WebElement> dataSourceName;
    
  • Примечание : Если ваш usecase предназначен для , найдите элемент вам не понадобится List, но WebElement

0 голосов
/ 24 октября 2018

className нужен полный класс.Для неполного имени класса вы можете использовать cssSelector

@FindBy (css = "[class^='css-fauxcontrol-textinput-']")
List<WebElement> dataSourceName;

Или xpath

@FindBy (xpath = "//div[starts-with(@class, 'css-control-textinput-')]")
List<WebElement> dataSourceName;
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...