2017-10-25 2 views
0

こんにちはみんな:ログインフィールドを検査GetElementByIdが機能しません。多分UTF-16を変換しますか?私はウェブサイト<a href="https://app.xyz.com/LoginEntry.aspx" rel="nofollow noreferrer">https://app.xyz.com/LoginEntry.aspx</a>上に自動的に私をログに記録する必要があり、私のコードで、次の問題を、持っている

using System; 
using System.Collections.Generic; 
using System.ComponentModel; 
using System.Data; 
using System.Drawing; 
using System.Linq; 
using System.Text; 
using System.Threading.Tasks; 
using System.Windows.Forms; 

namespace loggy 
{ 
    public partial class Form1 : Form 
    { 
     public Form1() 
     { 
      InitializeComponent(); 
     } 

     private void loggy_DocumentCompleted(object sender, WebBrowserDocumentCompletedEventArgs e) 
     { 



      try 
      { 

       HtmlDocument doc = loggy.Document; 
       HtmlDocument username = doc.GetElementById("wtLayoutLogin_SilkUIFramework_wt8_block_wtUsername_wtUsername_wtUsernameInput"); 
       HtmlDocument password = doc.GetElementById("wtLayoutLogin_SilkUIFramework_wt8_block_wtPassword_wtPassword_wtPasswordInput"); 
       HtmlDocument submit = doc.GetElementById("wtLayoutLogin_SilkUIFramework_wt8_block_wtAction_wtAction_wtLoginButton"); 

       username.SetAttribute("value", "[email protected]"); 
       password.SetAttribute("value", "123"); 
       submit.InvokeMember("click"); 
      } 

       catch 
      { 

      } 


     } 
    } 
    } 

は私に次のことを示しています

私は使用することはできません
<input name="wtLayoutLogin$SilkUIFramework_wt8$block$wtUsername$wtUsername$wtUserNameInput" type="text" maxlength="250" size="28" id="wtLayoutLogin_SilkUIFramework_wt8_block_wtUsername_wtUsername_wtUserNameInput" tabindex="2" class="Mandatory" placeholder="Email or Username" onkeydown="return OsEnterKey('wtLayoutLogin_SilkUIFramework_wt8_block_wtAction_wtAction_wtLoginButton', arguments[0] || window.event)" autofocus="autofocus"> 

"GetElementById"。私はC#で経験が豊富ではないので、テキストをどのように変換して使用できるようにするのか分かりません。

誰かが私を助けてくれますか?

+0

問題を示すサンプルHTMLを提供すると、ランダムな情報なしの投機の代わりにあなたを助けることができますか?質問をした人は、実際に問題を引き起こしていることについての仮定や仮定をしばしば共有していますが、問題を解決していない人から期待されるように、ここに来る前提はあまりよくありません。ヒューリスティックを解決する私の好きな問題:あなたが知っていることを完全な確実性で書き留めることは問題ではありません。それは通常それらの1つです。 –

+0

こんにちはエド、すみません、あなたは正しいです。私は今投稿を編集しました。私はそれが今この方が良いと思いますか? – CatiaV5

+0

AgilityPack HtmlDocumentではなくSystem.Windows.Forms.HtmlDocumentですか?あなたはどこから手に入れていますか?どのようにページを読み込んでいますか? WebBrowserコントロール? –

答えて

1

あなたが意味するものを正確に尋ねたはずです。「今後GetElementById」を使用することはできません。これ以上調べる前にを使用することはできません。これを私に教訓にしましょう。

HtmlDocument.GetElementById()はではなくHtmlElementを返します。あなたのコードはコンパイルできません。なぜなら、あなたは不可能な(それほど望ましくない)課題を作ろうとしているからです。

これは動作します:

var username = doc.GetElementById("wtLayoutLogin_SilkUIFramework_wt8_block_wtUsername_wtUsername_wtUsernameInput"); 
var password = doc.GetElementById("wtLayoutLogin_SilkUIFramework_wt8_block_wtPassword_wtPassword_wtPasswordInput"); 
var submit = doc.GetElementById("wtLayoutLogin_SilkUIFramework_wt8_block_wtAction_wtAction_wtLoginButton"); 

それとも

HtmlElement username = doc.GetElementById("wtLayoutLogin_SilkUIFramework_wt8_block_wtUsername_wtUsername_wtUsernameInput"); 
HtmlElement password = doc.GetElementById("wtLayoutLogin_SilkUIFramework_wt8_block_wtPassword_wtPassword_wtPasswordInput"); 
HtmlElement submit = doc.GetElementById("wtLayoutLogin_SilkUIFramework_wt8_block_wtAction_wtAction_wtLoginButton"); 

をすべてvarはありません、あなたがそれに割り当てしようとしているものは何でもタイプとして変数を定義しています。 HtmlDocument.GetElementById()is declared as returning HtmlElement , so if you hover the mouse over var in those lines, it'll tell you that HtmlElement is the actual type of username`などです。

そして、[email protected]は、Sun Warriorの姿勢を取ることができるようになりました。

+0

ありがとうございました!そして、冒頭のあいまいなポストのためにもう一度申し訳ありません! – CatiaV5

関連する問題

 関連する問題