2017-05-05 20 views
0

私はウェブサイトへのログインを自動化しようとしています。ボタンをクリックしようとしているイムはIDを持っていませんので、クリックすることはできません。IDを持っていないウェブサイトのボタンをクリックするにはどうすればいいですか?

これは、それは私がボタンをクリックするにはどうすればよい

<button class="btn btn-sm btn-block btn-green ng-binding">Login</button> 

次のようになりますか?

これまで私がこれまで行ってきたことです。

private void btnFill_Click(object sender, EventArgs e) 
{ 
    wbBrowser.Document.GetElementById("login-username").InnerText = tbUsername.Text; 
    wbBrowser.Document.GetElementById("login-password").InnerText = tbPassword.Text; 
} 
+1

'runat =" server "'と 'onserverclick =" btnFill_OnClick "'をボタンに追加しようとしましたか?そしてなぜそれがHTMLボタンであるのか? – doutriforce

+0

IDを手動で入力するか、ASP.NETに「runat」属性を割り当てます。 –

+0

ああ、今混乱しているhaha:p どういう意味ですか?それにIDを付けることはできますか?私はwinform atmを使用していません。ASP – VargaDev

答えて

0

IDを割り当てます。

<button class="btn btn-sm btn-block btn-green ng-binding" id="buttonSubmit">Login</button> 
+0

しかし、私のウェブサイトではなく、公開されているウェブサイトです。 – VargaDev

+0

私は少し混乱しています。あなたはソースコードにアクセスできませんか?私はこれがワードプレスのようなものだと推測するつもりですか? – Triforce711

+0

それは公のウェブサイトではなく、特定のものになるようにSpotifyします。私はそれを読み込むためにWebブラウザコントロールを使用していますし、ドキュメントを取得してそこからコントロールとIDにアクセスします。 – VargaDev

2

要素を見つけるためにXpathを使用します。

このような何か:

driver.FindElement(By.XPath("//div/div/input")) 
0

クラスと使用

$(".ng-binding").click(function(){ 

}); 

を検索、複数のボタンが同じクラス名である場合、具体的に

$("#priviousDIV .ng-binding").click(function(){ 
    //do something 
}); 
+0

webbrowserコントロールでwinformアプリケーションを使用していますが、どのようにクラスを見つけることができますか? – VargaDev

+0

runat = "server"と記述しないと、クラス値ではなくid値だけが変更されます。あなたはどんなクラスも見つけることができます – nikunjM

0

マイ提案は、ページのDOMを研究し、その知識を使ってプログラム的にドキュメントツリーを歩くことです。あなたができることは、IDを持っているボタンの上に親要素を見つけて、あなたがそれを見つけるまでツリーを歩いていくことです。

private void webBrowser1_DocumentCompleted(object sender, WebBrowserDocumentCompletedEventArgs e) 
    { 
     var ParentElement = webBrowser1.Document.GetElementById("parentId"); 
     var child = ParentElement.Children[0]; 
     child.InvokeMember("click"); 
    } 

基本的にページのHTML構造が分かっている場合は、探している要素を見つけることができます。

すべての最新のWebブラウザ(IEでも)は、ページのHTMLを検査し、それを使用してコードをトラバースするためのツールを内蔵しています。

関連する問題