如果元素是"隐藏"

时间:2017-08-07 02:51:10

标签: javascript c# jquery html webbrowser-control

所以我试图了解元素" g-recaptcha-response"当验证码出现时,它只显示在websource中(如果要查找此元素,则需要输入错误的名称和密码几次) 这个验证码一直对我来说是好的,因为我试图通过它的ID找到该特定元素,如果你在验证码在那里检查websource你将能够CTRL + F并搜索它和它会出现,但它有点透明?这让我觉得它隐藏了,这就是问题所在。

当我尝试捕获它并给它一个值时,它会抛出这个错误。

  

System.NullReferenceException:'对象引用未设置为   对象的实例。'

private void LoadRS()
        {
            webBrowser1.Navigate("https://secure.runescape.com/m=weblogin/loginform.ws?mod=www&ssl=0&dest=community");
            webBrowser1.Document.GetElementById("g-recaptcha-response").InnerHtml = "something";
        }

Here is what it looks like

有什么想法吗?

修改

我在质疑为什么我可以在Chrome上的元素编辑器中看到该元素,而不是在右键点击网页时我被告知这是因为

  

页面源是初始加载html页面时的内容   inspect元素将显示所有东西,注入的东西   js等

现在我需要弄清楚如何使用C#

获取该元素

1 个答案:

答案 0 :(得分:0)

这是因为元素(“g-recaptcha-response”)是由应用程序逻辑(可能是JavaScript)生成的。 我们需要在获取元素之前触发元素生成。

我们可以尝试单击提交/登录按钮来强制生成元素(“g-recaptcha-response”)。例如,在JavaScript中:

var loginButton = document.querySelector("input[type=submit]");
loginButton.click();

// Add some delay to wait for proper element generation, probably not needed
setTimeout(function() {
  var recaptchaID = document.getElementById("g-recaptcha-response");
}, 1000);
相关问题