【问题标题】:C# Selenium Web driver: Not able to select value from dropdownC# Selenium Web 驱动程序:无法从下拉列表中选择值
【发布时间】:2020-07-02 06:33:31
【问题描述】:

请参考下面的截图。 我正在尝试在下拉字段中提供值并选择第一个值。但它没有人口。 请指教

【问题讨论】:

    标签: c# selenium dropdown


    【解决方案1】:

    当你打开你的下拉菜单时试试这个。

      Driver.FindElements(By.CssSelector(".col-xs-3")).First(e => e.Text = "TE_GL1").Click();
    

    或者直接点击第一个元素

      Driver.FindElements(By.CssSelector(".col-xs-3")).First().Click();
    

    【讨论】:

      【解决方案2】:

      请这样试试

      var ul = driver.findelement(By.XPath("//ul[contains(@class,'your class name')]")).ToList();//loop over here. or if you know index than use it directly.
                      var Select = ul[your index].FindElements(By.TagName("li")).ToList();
                      foreach (IWebElement item in Select)
                      {
                          if (item.Text.Trim() == "Your Text")
                          {
                              DateTime start = DateTime.Now;
                              while ((DateTime.Now - start).TotalMilliseconds < 1500)
                              {
                                   Application.DoEvents();
                                   System.Threading.Thread.Yield();
                              }
                              item.Click();
                              break;
                          }
                      }
      

      希望对你有帮助。

      【讨论】:

      • 非常感谢!!!以上对我有用,但它仅在调试时有效。当我运行项目时,它不会从下拉列表中填充值。我错过了什么吗?
      • var ul = driver.findelement(By.XPath("//ul[contains(@class,'你的类名')]")).ToList(); var Select = ul[0].FindElements(By.TagName("li")).ToList(); foreach(Select 中的 IWebElement 项){ if (item.Text.Trim() == "TE_GL1") { item.Click(); // WebExtention.Wait(500);我正在使用 Chrome driver.Manage().Timeouts().ImplicitWait = TimeSpan.FromSeconds(50);休息; } }
      • 我也得到 OpenQA.Selenium.StaleElementReferenceException: 'stale element reference: element is not attach to the page document at if statement
      • @neeta Jadhav 我需要在 click() 之前使用 WebExtention.Wait(1500)
      • 并且您可以使用 try{}catch(NoSuchElementException){ goto your step} 处理此 StaleElementReferenceException: 错误,并且您可以使用 goto 在错误行上走得更远。希望你能理解。
      【解决方案3】:

      事实证明Thread.Sleep(5000); 奏效了!

      【讨论】:

      • 如果你必须使用这个技巧,通常意味着 DOM 还没有完全加载。而不是 Sleep 你最好 Wait 出现一个元素。见stackoverflow.com/a/7312740/578411
      猜你喜欢
      • 1970-01-01
      • 2013-05-03
      • 1970-01-01
      • 1970-01-01
      • 2018-01-18
      • 2014-06-06
      • 2022-07-25
      • 2015-07-03
      • 2015-03-13
      相关资源
      最近更新 更多