【发布时间】:2020-04-04 08:40:33
【问题描述】:
TestInChrome1 抛出异常 - “OpenQA.Selenium.ElementNotInteractableException:元素不可交互” 但是,当在 TestInChrome2 中使用 JavaScriptExecutor 时,它运行良好。
我的问题是:
为什么 Click() 方法在 TestInChrome1 中不起作用?
-
我们如何在不反复试验的情况下确定 JavaScriptExecutor 是必要的?
[TestMethod] public void TestInChrome1() { IWebDriver driver = new ChromeDriver(); driver.Navigate().GoToUrl("https://ultimateqa.com/"); IWebElement element = driver.FindElement(By.TagName("title")); element.Click(); driver.Quit(); } [TestMethod] public void TestInChrome2() { IWebDriver driver = new ChromeDriver(); driver.Navigate().GoToUrl("https://ultimateqa.com/"); IWebElement element = driver.FindElement(By.TagName("title")); IJavaScriptExecutor js = (IJavaScriptExecutor)driver; string title = (string)js.ExecuteScript("return document.title"); driver.Quit(); }
【问题讨论】:
-
你不能点击
<title>元素,java脚本只是返回它而不是尝试点击它。 -
你似乎在测试,在那种情况下你不应该使用 JSExecutor。相反,您应该调整您的测试或修复您的 UI
-
您可以将 JavascriptExecutor#ExecuteScript 与在被测浏览器的控制台中键入 javascript 进行比较,而不是使用 WebDriver 界面。我不熟悉 C# 绑定,但我敢打赌有类似
driver.Title
标签: javascript c# selenium selenium-webdriver page-title