首页
学习
活动
专区
工具
TVP
发布
社区首页 >问答首页 >如何使用Selenium WebDriver和C#选择在<span>标签下定义的下拉菜单项

如何使用Selenium WebDriver和C#选择在<span>标签下定义的下拉菜单项
EN

Stack Overflow用户
提问于 2018-08-19 22:16:08
回答 2查看 1.3K关注 0票数 1

代码语言:javascript
复制
<div class="span3">
                <div>
                    LSP Account<br>
                    <span title="" class="k-widget k-dropdown k-header" unselectable="on" role="listbox" aria-haspopup="true" aria-expanded="false" tabindex="0" aria-owns="cboAccountSettings_listbox" aria-disabled="false" aria-busy="false" aria-activedescendant="7245f0ab-5ba4-4c7b-b722-6c204d700e9f" style="width: 98%;">
                    <span unselectable="on" class="k-dropdown-wrap k-state-default">
                    <span unselectable="on" class="k-input">Any</span>
                    <span unselectable="on" class="k-select">
                    <span unselectable="on" class="k-icon k-i-arrow-s">select</span></span></span>
                    
                    <select id="cboAccountSettings" style="width: 98%; display: none;" data-value-primitive="true" data-bind="value: SWO_Id" data-role="dropdownlist">
                    <option value="" selected="selected">Any</option>
                    <option value="SWO-ARG">SoftwareONE ARG</option>
                    <option value="SWO-AUS">SoftwareONE AUS</option>
                    <option value="SWO-BOL">SoftwareONE BOL</option>
                    <option value="SWO-BRA">SoftwareONE BRA</option>
                    <option value="SWO-CAN">SoftwareONE CAN</option>
                    <option value="SWO-CHL">SoftwareONE CHL</option>
                    <option value="SWO-COL">SoftwareONE COL</option>
                    <option value="SWO-CRI">SoftwareONE CRI</option>
                    <option value="SWO-DOM">SoftwareONE DOM</option>
                    <option value="SWO-ECU">SoftwareONE ECU</option>
                    <option value="SWO-EMEA">SoftwareONE EMEA</option>
                    <option value="SWO-GTM">SoftwareONE GTM</option>
                    <option value="SWO-HKG">SoftwareONE HKG</option>
                    <option value="SWO-HND">SoftwareONE HND</option>
                    <option value="SWO-IDN">SoftwareONE IDN</option>
                    <option value="SWO-JAM">SoftwareONE JAM</option>
                    <option value="SWO-JPN">SoftwareONE JPN</option>
                    
                    </select>
                    </span>
                </div>
            </div>

1)我可以使用以下命令点击标签,但无法选择该项目:

代码语言:javascript
复制
driver.FindElement(By.CssSelector("span[aria-owns='cboAccountSettings_listbox']")).Click();

2)我也使用了这个代码,但是找不到特定的元素:

代码语言:javascript
复制
var LSPAccount = WebBrowser.FindElement(By.CssSelector("span[aria-owns='cboAccountSettings_listbox']"));   
Thread.Sleep(1000);
var selectElement = new SelectElement(LSPAccount);
Thread.Sleep(1000);
selectElement.SelectByValue("SWO-ARG");

3)我也试过了,但是没有成功:

代码语言:javascript
复制
var xpath = "//span[contains(@class,'k-widget k-dropdown k-header')][contains(@id,'cboAccountSettings')][contains(text(),'SoftwareONE ARG')]";
var admi = WebBrowser.FindElement(By.XPath(xpath));
Thread.Sleep(1000);
admi.Click();
EN

回答 2

Stack Overflow用户

发布于 2018-08-19 22:38:49

您可以尝试执行以下操作:

代码语言:javascript
复制
//get the select html element
var selectList = driver.FindElement(By.Selector("select#cboAccountSettings"));
//wrap it inside webdriver's SelectElement and select option with value "SWO-ARG"
var selectElement = new SelectElement(selectList);
selectElement.SelectByValue("SWO-ARG");

SelectElement需要表示html select的IWebElement。另外,请检查目标选择元素是否不在某个框架内。在这种情况下,首先切换到目标帧。

票数 0
EN

Stack Overflow用户

发布于 2018-08-20 05:17:04

Select元素不可见,这就是问题所在。您可以使用javascript选择选项(Java):

代码语言:javascript
复制
String option = "SWO-ARG";
((JavascriptExecutor) driver).executeScript("arguments[0].selected='selected';", driver.findElement(By.cssSelector("#cboAccountSettings option[value='" + option + "']")));

也可以尝试这样做:

代码语言:javascript
复制
JavascriptExecutor js = (JavascriptExecutor) driver;
js.executeScript("arguments[0].removeAttribute('selected');", driver.findElement(By.cssSelector("#cboAccountSettings option[selected]")));
js.executeScript("arguments[0].setAttribute('selected', 'selected');", driver.findElement(By.cssSelector("#cboAccountSettings option[value='SWO-ARG']")));
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/51918543

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档