C# 不同框架中的菜单和子菜单

C# 不同框架中的菜单和子菜单,c#,selenium,iframe,C#,Selenium,Iframe,我在点击子菜单时有点问题,原因是一个框架中的菜单标签和另一个框架中的子菜单,所以当我切换到另一个框架时,子菜单是不可见的 我的代码: driver.SwitchTo().DefaultContent().SwitchTo().Frame("top"); Actions actions = new Actions(driver); IWebElement menuHoverLink = driver.FindElement(By.PartialLinkText("Cons")); actions

我在点击子菜单时有点问题,原因是一个框架中的菜单标签和另一个框架中的子菜单,所以当我切换到另一个框架时,子菜单是不可见的

我的代码:

driver.SwitchTo().DefaultContent().SwitchTo().Frame("top");

Actions actions = new Actions(driver);
IWebElement menuHoverLink = driver.FindElement(By.PartialLinkText("Cons"));
actions.MoveToElement(menuHoverLink);
actions.Build().Perform();

driver.SwitchTo().DefaultContent().SwitchTo().Frame("content").FindElement(By.Id("elem3")).Click();
例外情况

意外错误。元素当前不可见,因此可能不可见 相互作用

有人知道在这种情况下我能做什么吗


谢谢。

尝试使用显式等待

driver.SwitchTo().Frame("content");
WebDriverWaitwait wait = new WebDriverWait(driver, TimeSpan.FromSeconds(10));
wait.Until(ExpectedConditions.ElementIsVisible(By.Id("elem3"))).Click();
或者使用发送键

actions.MoveToElement(menuHoverLink).Build().Perform();         
menuHoverLink.SendKeys(OpenQA.Selenium.Keys.ArrowDown);
menuHoverLink.SendKeys(OpenQA.Selenium.Keys.Enter);

尝试使用显式等待

driver.SwitchTo().Frame("content");
WebDriverWaitwait wait = new WebDriverWait(driver, TimeSpan.FromSeconds(10));
wait.Until(ExpectedConditions.ElementIsVisible(By.Id("elem3"))).Click();
或者使用发送键

actions.MoveToElement(menuHoverLink).Build().Perform();         
menuHoverLink.SendKeys(OpenQA.Selenium.Keys.ArrowDown);
menuHoverLink.SendKeys(OpenQA.Selenium.Keys.Enter);

我找到了解决办法,但并不总是有效的 我只是重定向到单击该选项后出现的url

string urlAfterClick = "..."

driver.Navigate().GoToUrl(urlAfterClick);

我找到了解决办法,但并不总是有效的 我只是重定向到单击该选项后出现的url

string urlAfterClick = "..."

driver.Navigate().GoToUrl(urlAfterClick);

当您切换到内容框时,它就不再可见,因为您需要停留在Cons元素上deadlock@LeonBarkan我添加了另一个解决方案,当您切换到内容框架时,它不再可见,因为您需要停留在Cons元素上deadlock@LeonBarkan我添加了另一个解决方案