2015-11-05 66 views
0

UPDATEJavaScript注入通过.NET应用程序无法找到textarea的

错误即将通过,因为页面加载奇怪 - 有没有办法,你可以告诉你的程序等,同时该页面仍加载?

结束时更新

我试图通过使用VB.NET .NET应用程序注入一些文本到一个textarea在网站上。我有我的浏览器控制设置,但我遇到了麻烦,没有找到textarea的JavaScript。

我运行使用铬合金的JScript技巧扩展这个代码,它完美的作品。

document.getElementById('magicScanBox').value = '12345678\n12345679' 

然而,当我通过我的文档上运行完全一样的剧本,我得到的错误

Unable to set property 'value' of undefined or null reference 

这里是代码我试图运行

Private Sub browser_DocumentCompleted(sender As System.Object, e As System.Windows.Forms.WebBrowserDocumentCompletedEventArgs) Handles browser.DocumentCompleted 

    If browser.DocumentTitle = "Login" Then 
     Dim headElement As HtmlElement = browser.Document.GetElementsByTagName("head")(0) 
     Dim scriptElement As HtmlElement = browser.Document.CreateElement("script") 
     Dim element As IHTMLScriptElement = DirectCast(scriptElement.DomElement, IHTMLScriptElement) 
     element.text = "document.getElementsByName('Username')[0].value='USERNAME';document.getElementsByName('Password')[0].value='PASSWORD';document.forms[0].submit();" 
     headElement.AppendChild(scriptElement) 
    End If 

    If browser.DocumentTitle = "Inventory" Then 
     Dim script = "document.getElementById('magicScanBox').value = '12345678\n12345679'" 
     browser.Document.InvokeScript("eval", New Object() {script}) 

     'Dim headElement As HtmlElement = browser.Document.GetElementsByTagName("head")(0) 
     'Dim scriptElement As HtmlElement = browser.Document.CreateElement("script") 
     'Dim element As IHTMLScriptElement = DirectCast(scriptElement.DomElement, IHTMLScriptElement) 
     'element.text = "document.getElementById('magicScanBox').value = '12345678\n12345679';" 
     'headElement.AppendChild(scriptElement) 

    End If 
End Sub 

请注意顶部(If browser.DocumentTitle = "Login")正常工作。这会注入用户名/密码并自动在登录页面上提交表单。

我试图与发生故障的部分相同的方法,它仍然没有找到它。我有一个怀疑,这是因为它是一个textarea控件而不是一个文本框,或者与VB.NET中的浏览器控件如何处理注入有关。

我怎么能去注射字符串转换为textarea控制与下面的标记?

<textarea class="form-control ng-pristine ng-valid ng-touched" style="resize: none;" rows="8" cols="10" id="magicScanBox" placeholder="" ng-paste="onPasteSerials($event)" ng-list="" ng-trim="false" ng-model="allEnteredSerials" ui-keypress="{13:'magicScan($event)'}"></textarea> 

此外,只是说,我无法编辑网站或标记 - 这是另一家公司的网站,我试图自动化库存上传到。

回答

0

原来的网站重新加载本身几次,所以我结束了在抛出一个检查,看看我所需要的控制加载,如果是的话,继续前进,进入信息。如果不是,它使用一个计时器要等到它准备好,然后填充进去。

相关问题