[英]Select from tag type - input dropdown with selenium C# webdriver
[英]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.