[英]Selenium : Firefox Driver, Selecting an item from a dropdown using SelectElement in c# not working correctly
我正在嘗試做一個簡單的任務,嘗試使用顯示的文本在下拉列表中選擇一個值。 情況如下。
我的HTML看起來像。
<div id="TestContainer" class="col-md-4">
<select onchange="Test()">
<option>Test1</option>
<option>Test2</option>
<option>Test3</option>
<option>Test4</option>
</select>
</div>
通過使用硒,我想使用下拉菜單中的第二項,即test2。 我為之編寫的C#代碼也是。
FirefoxDriverService service = FirefoxDriverService.CreateDefaultService();
service.FirefoxBinaryPath = @"C:\Program Files (x86)\Mozilla Firefox\firefox.exe";
string localURL = "http://localhost:82/";
using (IWebDriver driver = new FirefoxDriver(service))
{
driver.Navigate().GoToUrl(localURL);
var div = driver.FindElement(By.Id("TestContainer"));
div.Click();
IWebElement dropDownListBox = div.FindElement(By.TagName("select"));
SelectElement demoSelect = new SelectElement(dropDownListBox);
demoSelect.SelectByText("Test2");
driver.Manage().Timeouts().ImplicitlyWait(TimeSpan.FromSeconds(2));
}
除了上述以外,我什至嘗試過逐個迭代選項並選擇如下所示的適當項目也無濟於事。
if (option.Text.Equals("Test2"))
{
option.Click();
driver.Manage().Timeouts().ImplicitlyWait(TimeSpan.FromSeconds(2));
break;
}
在以上兩種情況下,代碼均不會中斷,不會引發異常,但不會選擇該值,並且似乎什么也沒有發生。
我正在使用的硒的版本如下。
<package id="Selenium.Support" version="2.53.1" targetFramework="net452" />
<package id="Selenium.WebDriver" version="2.53.1" targetFramework="net452" />
<package id="WebDriver.GeckoDriver"version="0.9.0"targetFramework="net452" />
我也正在使用最新版本的Firefox(48.0)
有人遇到過這個問題嗎? 如果您能指出正確的方向,那將是很好的。
如果您已嘗試使用SelectElement
所有方法來選擇一個option
但未成功,則可以嘗試以下另一種使用IJavascriptExecutor
解決方案:-
IWebElement dropDownListBox = driver.FindElement(By.cssSelector("#TestContainer select"));
((IJavaScriptExecutor)driver).ExecuteScript("var select = arguments[0]; for(var i = 0; i < select.options.length; i++){ if(select.options[i].text == arguments[1]){ select.options[i].selected = true; } }", dropDownListBox, "Test2");
完整代碼:
using (IWebDriver driver = new FirefoxDriver(service))
{
driver.Navigate().GoToUrl(localURL);
IWebElement dropDownListBox = driver.FindElement(By.cssSelector("#TestContainer select"));
((IJavaScriptExecutor)driver).ExecuteScript("var select = arguments[0]; for(var i = 0; i < select.options.length; i++){ if(select.options[i].text == arguments[1]){ select.options[i].selected = true; } }", dropDownListBox, "Test2");
}
我也有這個確切的問題。
<package id="Selenium.Support" version="2.53.1" targetFramework="net452" />
<package id="Selenium.WebDriver" version="2.53.1" targetFramework="net452" />
<package id="WebDriver.GeckoDriver"version="0.9.0"targetFramework="net452" />
並運行FireFox版本48.0。
將FireFox更新到版本49.0.1之后,SelectElement類終於可以完成其工作。
該網站可以檢測到Javascriptexecutor,我遇到了同樣的問題,並且解決了該問題,並創建了一個webelement下拉列表。 這是代碼:
WebElement dropdown = driver.findElement(By.id("serverLogin"));
dropdown.sendKeys(server);
dropdown.sendKeys(Keys.ENTER);
這樣就無需升級Firefox
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.