ExecuteScript不会更改元素的可见性 - 元素不可见

时间:2016-07-22 13:27:52

标签: c# selenium-webdriver

我的页面中有一个隐藏的输入文字,我需要取消隐藏它并确定密钥' *'它。默认情况下,Selenium不允许您分配键或访问页面中隐藏的元素,并且可以理解,但在这种情况下,我需要访问该隐藏元素。 我使用以下代码从ExecuteScript调用方法IJavaScriptExecutor

js.ExecuteScript("document.getElementById('ctl00_ContentPlaceHolder1_tbIsCaptchaChecked').setAttribute('display', 'flex')");

但是仍然没有运气,因为我收到错误"元素不可见"

这是我的完整代码:

var _driver = new ChromeDriver();
var js = _driver as IJavaScriptExecutor;
js.ExecuteScript("document.getElementById('ctl00_ContentPlaceHolder1_tbIsCaptchaChecked').setAttribute('display', 'flex')");
_driver.FindElement(By.CssSelector("input#ctl00_ContentPlaceHolder1_tbIsCaptchaChecked.hiddenRecaptcha")).SendKeys("*");

1 个答案:

答案 0 :(得分:1)

改为设置样式属性:

"document.getElementById('...').style.display = 'flex';"

请注意,要被Selenium视为可见,该元素也需要具有大小。