使用 Selenium 访问不可见的文本输入元素

Access invisible textinput element with Selenium

我正在尝试访问输入元素,但是当我尝试单击或向其中发送键时,VS 抛出以下异常:

An unhandled exception of type 'OpenQA.Selenium.ElementNotVisibleException' occurred in WebDriver.dll

Additional information: element not visible

谷歌搜索后我发现这可能是一个不可见的输入元素,我需要使用 JavaScript 驱动程序来完成。我不太擅长C#,而且我以前从未使用过Selenium,因此我无法自己实现这部分,所以我希望你能帮助我。

这是我检查元素时在表单源代码中看到的内容:

<span class="origin-ux-textbox-control origin-ux-control">
<span>
<input id="ebi_email-input" maxlength="256" type="text" name="" value="peterparker@web.de" autocorrect="off" autocapitalize="off" autocomplete="off"></span>
</span>

这是我试过的:

driver.FindElement(By.Id("ebi_email-input")).Click();
driver.FindElement(By.Id("ebi_email-input")).Clear();
driver.FindElement(By.Id("ebi_email-input")).SendKeys(email);

第一行抛出异常

我怀疑使用了一些重复的 ids。尝试查找 FindElements 方法返回了多少个元素,如果不止一个,那么我猜你可以遍历并找到可见的元素,然后发送密钥。或者,如果您必须使用 javascript 以下内容也应该有效。

IJavaScriptExecutor js = (IJavaScriptExecutor) driver;
IWebElement element = driver.FindElement(By.Id("ebi_email-input"));
js.ExecuteScript("arguments[0].setAttribute('value', 'youremailaddress')", element);