如何使用 Selenium C# select Devextreme 下拉列表中的值
How to select a value from Devextreme dropdown with Selenium C#
我需要 select 值(来自 House_TypeList 的任何值)来自带有 NUnit 的下拉菜单或纯硒。 .
HTML 中没有看到它们。
我已经通过 xpath、名称、跨度包含等尝试了 select,我尝试向下发送密钥。我一直在等待元素变得可见。我没主意了。什么都不管用。我还没有尝试移动光标并尝试 select 它,但是在实现它时遇到了一些问题并且考虑到我的运气,我也不相信它会起作用..
我在这里是初学者,可能我在那里犯了一些错误。但我成功地管理了任何其他输入、按钮、导航..
我已经检查了其他类似的问题,但找不到适合我的答案。
这里甚至可以吗?
来源:
<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"> *</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>
您在此处提供的 DOM 不包含任何列表元素。所以我不能在这里分享确切的工作代码。我将分享一些您可以更新和使用的示例
使用 Selenium 到列表中的 select 项,您有两个选项可供选择:-
- Select Class
创建一个 select class 的对象,如下所示
Select obj =new Select(driver.findElement(By.id("search-box")));
然后你可以在这个select对象上使用几个函数
obj.selectByVisibleText("Apartment");
Or
obj.selectByIndex(2);
or
obj.selectByValue("Farmhouse");
您还可以获取列表中的所有元素,然后处理该列表
List <WebElement> myHouseList = obj.getOptions();
System.out.println(myHouseList.size());
2.操作 Class
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();
希望对您有所帮助!!
完成。在 Devextreme support 中找到它,用户遇到了一些不同的问题,但它也解决了我的问题。
IWebElement selectedItem = driver.FindElement(By.XPath("//div[@role='option']/div[text()='Apartment']"));
selectedItem.Click();
我需要 select 值(来自 House_TypeList 的任何值)来自带有 NUnit 的下拉菜单或纯硒。 . HTML 中没有看到它们。 我已经通过 xpath、名称、跨度包含等尝试了 select,我尝试向下发送密钥。我一直在等待元素变得可见。我没主意了。什么都不管用。我还没有尝试移动光标并尝试 select 它,但是在实现它时遇到了一些问题并且考虑到我的运气,我也不相信它会起作用..
我在这里是初学者,可能我在那里犯了一些错误。但我成功地管理了任何其他输入、按钮、导航..
我已经检查了其他类似的问题,但找不到适合我的答案。
这里甚至可以吗?
来源:
<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"> *</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>
您在此处提供的 DOM 不包含任何列表元素。所以我不能在这里分享确切的工作代码。我将分享一些您可以更新和使用的示例
使用 Selenium 到列表中的 select 项,您有两个选项可供选择:-
- Select Class
创建一个 select class 的对象,如下所示
Select obj =new Select(driver.findElement(By.id("search-box")));
然后你可以在这个select对象上使用几个函数
obj.selectByVisibleText("Apartment");
Or
obj.selectByIndex(2);
or
obj.selectByValue("Farmhouse");
您还可以获取列表中的所有元素,然后处理该列表
List <WebElement> myHouseList = obj.getOptions();
System.out.println(myHouseList.size());
2.操作 Class
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();
希望对您有所帮助!!
完成。在 Devextreme support 中找到它,用户遇到了一些不同的问题,但它也解决了我的问题。
IWebElement selectedItem = driver.FindElement(By.XPath("//div[@role='option']/div[text()='Apartment']"));
selectedItem.Click();