Selenium Webdriver:选择多级菜单中的菜单项

时间:2015-05-27 12:10:26

标签: c# visual-studio selenium-webdriver

使用C#在Visual Studio中使用Selenium WebDriver。 我创建了一个驱动程序对象,我正在使用。

的实例

我尝试访问此网站的顶级菜单:http://store.demoqa.com/

第二个菜单元素"产品类别",有一个子菜单。我试图模仿"产品类别"元素,然后选择并单击列表中的第一个元素(附件)。

这是我到目前为止所做的事情,通过在这里和其他地方的几次搜索拼凑而成。它可以点击菜单项("附件")。我看到顶部元素被选中,菜单项被选中"因为当鼠标悬停在它上面时会略微缩进。但是,从那里我似乎无法点击()它。

"菜单项-33"是顶级菜单项,产品类别。 "菜单项-34"是子菜单项附件。

Actions action = new Actions(FFDriver.Instance);
IWebElement we = FFDriver.Instance.FindElement(By.Id("menu-item-33"));
action.MoveToElement(we).MoveToElement(FFDriver.Instance.FindElement(By.Id("menu-item-34"))).Click().Build().Perform(); 

它移动到正确的项目,但Click()函数似乎不起作用,因为页面没有改变。

请原谅我,如果这些信息太少,但我已经试图将其缩小到似乎是斗争的代码。

1 个答案:

答案 0 :(得分:1)

我不明白为什么你的代码不起作用。但是,如果需要,您可以尝试实现一些显式等待。我尝试了以下它,它的工作原理。注意:我建议您使用id来定位元素。但是,我认为我向您展示了另一种选择,直接找到锚点对子菜单项更明智

By byId = By.Id("menu-item-33");
By css = By.CssSelector("a[href*='product-category/accessories']");

Actions action = new Actions(_driver);
IWebElement we = _driver.FindElement(byId);
action.MoveToElement(we).Build().Perform();
new WebDriverWait(_driver,TimeSpan.FromSeconds(2)).Until(ExpectedConditions.ElementIsVisible(css)).Click();