C#selenium - 元素不可见:元素当前不可见,可能无法处理错误消息

时间:2018-04-07 01:57:35

标签: c# selenium selenium-webdriver webdriver html-select

我无法从下拉列表中选择一个选项,通过单击输入文本框可以看到该选项。我正在使用Selenium和c#。功能如下;

  • 打开网页
  • 点击目标文本框
  • 这会导致显示目的地下拉列表
  • 从此列表中选择一个选项
  • 然后将该选项写入“目标”文本框

此列表的HTML是;

 <div id='dvCountryList'>
    <select class="country-list" id="DestinationPicker" multiple="multiple" name="DestinationPicker">
    <option value="AU">Australia</option>
    <option value="ID">Indonesia</option>
    <option value="FJ">Fiji</option>
    <option value="US">United States of America (includes Hawaii)</option>
    <option value="CN">China</option>
    <option value="XA">Worldwide</option>
    <option value="TH">Thailand</option>
    </select>
    </div>

我的测试代码如下;

IWebElement destination1 = driver.FindElement(By.ClassName("select2-search__field"));
destination1.Click();

IWebElement destination2 = driver.FindElement(By.ClassName("country-list"));
SelectElement country = new SelectElement(destination2);
country.SelectByValue("AU");

运行此测试会产生以下错误;

OpenQA.Selenium.ElementNotVisibleException:元素不可见:元素当前不可见,可能无法操作

我在找到country-list类之前尝试使用等待,但这没有帮助。我对Selenium很新,所以感谢任何帮助/反馈。感谢。

1 个答案:

答案 0 :(得分:0)

要识别webelement destination2 ,您已将定位器策略用作driver.FindElement(By.ClassName("country-list"));,这可能无法唯一标识该元素。要识别元素,可以使用以下代码块:

IWebElement destination2 = driver.FindElement(By.XPath("//select[@class='country-list' and @id='DestinationPicker']"));
SelectElement country = new SelectElement(destination2);
country.SelectByValue("AU");