c# - 尝试通过右键单击 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();
解决方案
您可以通过以下方式欺骗您吗?打开带有所需 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 +"');");
推荐阅读
- aem - 如何在 AEM 上的列表组件对话框中使用子编辑器?
- javascript - 过滤重复项并将它们分组到单独的数组中
- python - 在元组的元组列表中通过内部元组查找元素
- visual-studio-code - 向上/向下移动打开编辑器的 VSCode 快捷方式(不是组,而是打开编辑器)
- python - Python-检查值在无限范围内
- python - 通过 for 循环后计数器变量没有改变
- javascript - 检测数组元素中的组合
- drake - Drake 中的差动驱动机器人仿真
- objective-c - 实施 FCM 时,没有为应用程序错误找到有效的“aps-environment”权利字符串
- python - 在具有多个键的字典内循环