How to select elements for react select on modal f

2019-09-20 07:44发布

Following is what I am trying to do: Project is built with ReactJS, I am using Selenium WebDriver with Java.

  1. Click on button (I can do this)
  2. This opens a modal, which have react select component.

I want to select an element in this select.

HTML Code:

  <div class="row">
    <div class="col-xs-7">
      <div class="Select kpi-select is-searchable Select--single">
        <div class="Select-control">
          <span class="Select-multi-value-wrapper" id="react-select-19--value">
            <div class="Select-placeholder">Select KPI</div>
            <div class="Select-input" style="display: inline-block;">
              <input id="add-kpi-kpi-select" aria-activedescendant="react-select-19--value" aria-expanded="false" aria-haspopup="false" aria-owns="" role="combobox" value="" style="box-sizing: content-box; width: 5px;">
              <div style="position: absolute; top: 0px; left: 0px; visibility: hidden; height: 0px; overflow: scroll; white-space: pre; font-size: 14px; font-family: Roboto, Helvetica, Arial, sans-serif; font-weight: 300; font-style: normal; letter-spacing: normal; text-transform: none;"></div>
            </div>
          </span>
          <span class="Select-arrow-zone"><span class="Select-arrow"></span></span>
        </div>
      </div>
    </div>
    <div class="col-xs-5">
      <div class="Select kpi-select is-searchable Select--single">
        <div class="Select-control">
          <span class="Select-multi-value-wrapper" id="react-select-20--value">
            <div class="Select-placeholder">Select Time Period</div>
            <div class="Select-input" style="display: inline-block;">
              <input id="add-kpi-timeperiod-select" aria-activedescendant="react-select-20--value" aria-expanded="false" aria-haspopup="false" aria-owns="" role="combobox" value="" style="box-sizing: content-box; width: 5px;">
              <div style="position: absolute; top: 0px; left: 0px; visibility: hidden; height: 0px; overflow: scroll; white-space: pre; font-size: 14px; font-family: Roboto, Helvetica, Arial, sans-serif; font-weight: 300; font-style: normal; letter-spacing: normal; text-transform: none;">
              </div>
            </div>
          </span>
          <span class="Select-arrow-zone"><span class="Select-arrow"></span></span>
        </div>
      </div>
    </div>
  </div>

Screenshot:

enter image description here

1条回答
劫难
2楼-- · 2019-09-20 08:13

Java code to choose KPI

String wantedOption = "wanted KPI";

// click the down arrow to expand options
driver.findElement(By.cssSelecor("div.Select.kpi-select span.Select-arrow")).click();


// select wanted KPT
driver.findElement(By.cssSelector("div.Select.kpi-select div.Select-menu"))
    .findElement(By.xpath(String.format(".//div[text()='%s']", wantedOption)))
    .click();

Guide to make options keep expand through add break point on click event:

  1. Open Chrome DevTool
  2. Switch to Sources Tab
  3. Follow steps as below shown enter image description here

  4. Click on the Select KPI dropdown from page

  5. You will see a new DOM node <div class="Select-menu-outer"> which holds all options in Element Tab

enter image description here

查看更多
登录 后发表回答