繁体   English   中英

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

[英]How to select dropdown menu item which is defined under <span> tag using Selenium WebDriver and C#

 <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 ki-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)我可以使用来点击标签,但无法选择该项目:

driver.FindElement(By.CssSelector("span[aria-owns='cboAccountSettings_listbox']")).Click();

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

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)我也尝试过,但没有成功:

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();

您可以尝试以下操作:

//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选择的IWebElement。 另外,请检查目标选择元素是否不在某个框架内。 在这种情况下,请先切换到目标帧。

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

String option = "SWO-ARG";
((JavascriptExecutor) driver).executeScript("arguments[0].selected='selected';", driver.findElement(By.cssSelector("#cboAccountSettings option[value='" + option + "']")));

也试试这个:

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']")));

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM