使用Selenium访问不可见的textinput元素

时间:2015-01-12 13:01:13

标签: c# 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);

在第一行抛出异常。

1 个答案:

答案 0 :(得分:0)

我怀疑正在使用一些重复的ids。尝试查找FindElements方法返回的元素数量,如果不止一个,那么我猜你可以遍历并找到可见的元素,然后发送密钥。或者,如果你必须使用javascript也应该工作。

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