我尝试访问此网站的顶级菜单: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()函数似乎不起作用,因为页面没有改变。
请原谅我,如果这些信息太少,但我已经试图将其缩小到似乎是斗争的代码。
答案 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();