Выбрать случайные значения из раскрывающийся список с использованием селена? - PullRequest
1 голос
/ 10 июля 2020

Я не могу выбрать случайные значения из раскрывающегося списка, который имеет код ниже html.

<div class='ui-dropdown-items-wrapper'>
   <ul class='ui-dropdown-items ui-dropdown-list' role='listbox'>
      <cdk-virtual-scroll-viewport class='cdk-virtual-scroll-viewport'>
         <div class='cdk-virtual-scroll-content-wrapper'>
            <p-dropdownitem class='ng-tns-c14'>
               <li role='option' class='ui-dropdown-items ui' area-label="apple">
                  <span class='ng-star-inserted'>apple</span>
               </li>
            </p-dropdownitem>
            <p-dropdownitem class='ng-tns-c14'>
               <li role='option' class='ui-dropdown-items ui' area-label="Banana">
                  <span class='ng-star-inserted'>Banana</span>
               </li>
            </p-dropdownitem>
            <p-dropdownitem class='ng-tns-c14'>
               <li role='option' class='ui-dropdown-items ui' area-label="Mango">
                  <span class='ng-star-inserted'>Mango</span>
               </li>
            </p-dropdownitem>
         </div>
         <div class="cdk-virtual-scroll-spacer"></div>
      </cdk-virtual-scroll-viewport>
   </ul>
</div>

Я пробовал код ниже, но не работает ... Может ли кто-нибудь помочь мне выбрать случайные значения сверху HTML код.

List<WebElement> options = driver.findElements(By.xpath("//*[@role='option']"));
Random rand = new Random();
int list= rand.nextInt(options.size());
options.get(list).click();

Ответы [ 2 ]

0 голосов
/ 10 июля 2020

Я изменил XPath, и он работает нормально, но перед выполнением выбора из раскрывающегося списка мне нужно щелкнуть раскрывающийся список, тогда загружается только список li / span.

XPath изменен как: * Окончательный код:

List<WebElement> options = driver.findElements(By.xpath("//label[@for='year']/../div//li[not(contains(.,'--select--'))]"));
 Random rand = new Random();
 int list= rand.nextInt(options.size());
 options.get(list).click();
0 голосов
/ 10 июля 2020

Не могли бы вы попробовать с этим XPath?

 List<WebElement> options = driver.findElements(By.xpath("//p-dropdownitem/li[@role='option']/span"));
 int size = options.size();

 options.get(new Random().nextInt(size)).click();
...