【问题标题】:How to select a value from Devextreme dropdown with Selenium C#如何使用 Selenium C# 从 Devextreme 下拉列表中选择一个值
【发布时间】:2020-06-12 12:42:43
【问题描述】:

我需要使用 NUnit 或纯硒从下拉菜单中选择值(House_TypeList 中的任何值)。 . 它们在 HTML 中看不到。 我试过按 xpath、按名称、按跨度包含等选择,我尝试发送向下键。我一直在等待元素变得可见。我没主意了。没有任何效果。我还没有尝试移动光标并尝试通过它来选择它,但是在实现它时遇到了一些问题,并且考虑到我的运气,我不太相信它也会起作用..

我是这里的初学者,也许我在那里犯了一些错误。但我成功地管理了任何其他输入、按钮、导航..

我检查了其他类似的问题,但找不到适合我的答案。

这里有可能吗?

来源:

<div class="dx-item dx-box-item" style="display: flex; min-height: auto; flex-grow: 1; flex-shrink: 1;"
  <div class="dx-item-content dx-box-item-content" style="width: auto; height: auto; display: flex; flex-direction: column; flex-basis: 0px; flex-grow: 1;">
    <div class="dx-first-col dx-last-col dx-field-item dx-field-item-required dx-col-0 dx-flex-layout dx-label-h-align">
      <label class="dx-field-item-label dx-field-item-label-location-left" for="dx_dx-...._typeId">
        <span class="dx-field-item-label-content" style="width: 159px;">
          <span class="dx-field-item-label-text">Type:</span>
          <span class="dx-field-item-required-mark">&nbsp;*</span>
        </span>
      </label>
      <div class="dx-field-item-content dx-field-item-content-location-right">
        <div class="dx-textbox dx-texteditor dx-texteditor-empty dx-dropdowneditor-button-visible dx-widget dx-dropdowneditor-field-clickable dx-dropdowneditor dx-selectbox dx-validator dx-visibility-change-handler" id="slb_HouseManagement_EditHouse_TypeList">
          <div class="dx-dropdowneditor-input-wrapper dx-selectbox-container">
            <input type="hidden" value="" name="typeId">
            <div class="dx-texteditor-container">
              <input autocomplete="off" id="dx_dx-4e..._typeId" class="dx-texteditor-input" aria-haspopup="true" aria-autocomplete="list" type="text" readonly="" spellcheck="false" tabindex="0" aria-expanded="false" role="combobox" aria-required="true">
              <div data-dx_placeholder="Select..." class="dx-placeholder"></div>
              <div class="dx-texteditor-buttons-container">
                <div class="dx-dropdowneditor-button dx-button-normal dx-widget" type="button">
                  <div class="dx-button-content">
                    <div class="dx-dropdowneditor-icon"></div>
                  </div></div></div></div></div></div></div></div></div></div>

【问题讨论】:

    标签: c# selenium automated-tests dropdown devextreme


    【解决方案1】:

    完成。在Devextreme support 找到它,用户遇到了一些不同的问题,但它也解决了我的问题。

    IWebElement selectedItem = driver.FindElement(By.XPath("//div[@role='option']/div[text()='Apartment']"));
    selectedItem.Click();
    

    【讨论】:

      【解决方案2】:

      您在此处提供的 DOM 不包含任何列表元素。所以我不能在这里分享确切的工作代码。我将分享一些您可以更新和使用的示例

      使用 Selenium 从列表中选择项目,您有两个选项可供选择:-

      1. 选择班级

      像下面这样创建一个选择类的对象

       Select obj =new Select(driver.findElement(By.id("search-box")));
      

      那么你可以在这个select obj上使用几个函数

      obj.selectByVisibleText("Apartment");
      Or
      obj.selectByIndex(2);
      or
      obj.selectByValue("Farmhouse");
      

      您还可以获取列表中的所有元素,然后围绕该列表进行处理

      List <WebElement> myHouseList = obj.getOptions();
      
      System.out.println(myHouseList.size());
      

      2.动作类

       driver.manage().timeouts().implicitlyWait(10 , TimeUnit.SECONDS);
        ele= driver.findElement(By.linkText("HouseList"));
        Actions act = new Actions(driver);
        act.moveToElement(ele).click();
      
        WebElement webele = driver.findElement(By.linkText("Apartment"));
        act.moveToElement(webele).click().build().perform();
      

      希望对你有帮助!!

      【讨论】:

      • 非常感谢您的帮助,我打赌我仍然无法从下拉列表中选择任何内容。问题是,即使选择了下拉菜单并且选项可见,它们也不会出现在源代码中(通过 Chrome Inspector 进行查看)我看不到该输入字段的任何子项。
      • 当我在使用 selenium IDE 录制时单击它时,它被记录为:css=.dx-state-active > .dx-item-content OR xpath=//div[20]/div /div/div/div/div/div/div[2]/div[3]/div OR xpath with id is inconstant
      • 您能否分享该网页的确切加载 DOM,以便我可以复制您的问题,您可以在屏幕上查看列表选项吗?对吗?
      猜你喜欢
      • 2016-11-09
      • 1970-01-01
      • 2011-07-13
      • 2020-08-02
      • 2011-07-25
      • 2017-04-21
      相关资源
      最近更新 更多