首页 > 解决方案 > 尝试通过右键单击 Web 元素打开新选项卡,但无法打开

问题描述

右键单击“衬衫”元素而不是“Tshirt”。并且右键单击后它不会执行“打开新标签”操作。

注意:右键单击窗口时,窗口会向下移动一点并选择“衬衫”元素。

driver = new ChromeDriver();
driver.Navigate().GoToUrl("http://www.flipkart.com");
IWebElement menHomePageElement = driver.FindElement(By.XPath("//a[@title = 'Men']"));
driver.Manage().Window.Maximize();

Thread.Sleep(5000);

driver.FindElement(By.XPath("//div/button[text() = '✕']")).Click();
Actions action = new Actions(driver);

IWebElement tshirtLinnk = driver.FindElement(By.XPath("//a[@title = 'T-Shirts']"));
IWebElement shirtLinnk = driver.FindElement(By.XPath("//a[@title = 'Shirts']"));
IWebElement kurtasLinnk = driver.FindElement(By.XPath("//a[@title = 'Kurtas']"));

Thread.Sleep(3000);

action.MoveToElement(menHomePageElement).Perform();

Thread.Sleep(3000);

action.MoveToElement(tshirtLinnk).Perform();

Thread.Sleep(5000);

action.ContextClick(tshirtLinnk).SendKeys(Keys.ArrowDown).Build().Perform();

元素试图点击

项目被点击

标签: c#seleniumselenium-webdriver

解决方案


您可以通过以下方式欺骗您吗?打开带有所需 URL 的新窗口:

driver.Url = "http://www.flipkart.com";      
driver.FindElement(By.CssSelector("button._2AkmmA._29YdH8")).Click();
Actions action = new Actions(driver);
action.MoveToElement(driver.FindElement(By.CssSelector("#container > div > header > div.zi6sUf > div > ul > li:nth-child(3) > a > span"))).Perform();
action.MoveToElement(driver.FindElement(By.CssSelector("a[title='T-Shirts']"))).Perform();

string nextLink = driver.FindElement(By.CssSelector("a[title='T-Shirts']")).GetAttribute("href");
IJavaScriptExecutor js = (IJavaScriptExecutor)driver;
js.ExecuteScript("window.open('" + nextLink +"');");

推荐阅读