【问题标题】:Selenium C# dropdown jumps back to original stateSelenium C# 下拉菜单跳回原始状态
【发布时间】:2015-11-22 20:43:11
【问题描述】:

目前我正在做一个小项目来验证一些登录帐户。 我遇到了这个问题,当我选择提供商 Canal Digitaal 然后单击“登录”时,下拉框会跳回其初始状态。手动操作时工作正常,但使用 UnitTest 自动化时却不行。我简化了代码(没有 POM),但它仍然无法正常工作。希望有人知道我的问题是什么。对于一个类似的网站,它工作正常,但它不是。这是我现在的代码:

        IWebDriver driver = new FirefoxDriver();
        driver.Navigate().GoToUrl("http://video.sport1.nl");

        driver.FindElement(By.Id("login")).Click();

        new SelectElement(driver.FindElement(By.Id("provider"))).SelectByValue("canaldigitaal");

        driver.FindElement(By.Id("login")).Click();    

【问题讨论】:

  • 你确定"canaldigitaal" 是正确的值吗?
  • 是的,我确定。它也被选中。但只要我点击登录按钮,它就会跳回 Sport1 Go。

标签: c# selenium drop-down-menu dropdownbox


【解决方案1】:

问题是页面上有两个 ID = login 的元素。您可以通过使用driver.FindElements(By.CssSelector("#login")).Count 看到它并返回 2。一个是 DIRECT INLOGGEN 链接(右上角),另一个是 Inloggen(红色按钮)。您错误地单击了重置所有内容的 DIRECT INLOGGEN 链接。试试这个

IWebDriver driver = new FirefoxDriver();
driver.Navigate().GoToUrl("http://video.sport1.nl");
driver.FindElement(By.Id("login")).Click();
new SelectElement(driver.FindElement(By.Id("provider"))).SelectByValue("canaldigitaal");
driver.FindElement(By.CssSelector("div.login > #login")).Click();

我首先抓取了一个父 DIV div.login(带有类登录的 DIV),然后找到了带有 ID 登录的 A 子 (>)。

【讨论】:

  • 谢谢!这似乎是问题所在。我尝试了 Xpath 和 ID,但都没有工作。现在我看到我使用的 Xpath (a//*[@id='login']) 与两个按钮匹配。我认为 ID 是独一无二的.. :(
  • HTML ID supposed 按照 HTML 标准在页面上是唯一的,但这取决于开发人员是否遵守该标准。有时,我已经学会了艰难的方式,但这并不总是发生。我很高兴你发现了这个问题。如果这回答了您的问题,请接受它作为答案。
猜你喜欢
  • 2020-02-22
  • 1970-01-01
  • 2013-01-30
  • 2018-02-09
  • 1970-01-01
  • 2019-03-26
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多