我正在尝试使用C#中的Selenium webdriver从下拉菜单中选择一个文本 它与Chrome浏览器完美配合,但不适用于Firefox。任何人都可以帮我解决这个问题。
我正在使用的代码如下所示。
public void SelectCountry1(string country)
{
var countryDropDown = Driver.FindElement(By.XPath(xpathidofthecountrydropdown));
countryDropDown .Click();
//Driver.FindElement(By.XPath(xpathidofthecountrydropdown)).Click;
var selectElement = new SelectElement(countryDropDown);
selectElement.SelectByText(country);
}
我可以调用此函数,这是成功执行的,没有任何错误消息。我无法选择预期的关键字,尽管它存在。
目前我有一个解决方法,即单击相同的ID两次,这使代码工作。评论部分没有注释但我不认为这是正确的解决方法。让我知道你对此的看法。
谢谢
答案 0 :(得分:0)
通常,select类会处理选择,而不需要单击下拉列表。它应该在FF和Chrome中都有效,即Select有一些其他问题。尽量不要单击下拉按钮。如果选择类不起作用,它会尝试单击并导航向下发送向下键然后按Enter键的选项。
答案 1 :(得分:0)
是的,它与Firefox不兼容。我不得不使用它作为使用jQuery的变通方法。如果页面上没有jQuery,请随意使用常规JavaScript修改此代码。
public static void SetDropdownSelectedOptionByText(IWebDriver driver, string tagId, string newText, int sleepTime)
{
// not working when selecting client id of certain types of ASP.NET user controls
//new SelectElement(driver.FindElement(By.Id(tagId))).SelectByText(newText);
IJavaScriptExecutor js = driver as IJavaScriptExecutor;
js.ExecuteScript("$('#" + tagId + " option:contains(" + Element.NonNullValue(newText) + ")').attr('selected', 'selected')");
js.ExecuteScript("$('#" + tagId + "').change()");
System.Threading.Thread.Sleep(sleepTime); // wait for dependent dropdown to load its values
}