2017-05-05 46 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」屬性的ID。 –

+0

哦,我現在困惑了,現在哈哈: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

我有點困惑。你沒有訪問源代碼嗎?我會猜測這就像wordpress一樣? – Triforce711

+0

不,這是一個公共網站,Spotify具體。我使用webbrowser控件加載它,然後獲取文檔並從那裏訪問其控件和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值而不是class值。所以你可以找到任何課程 – 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結構,你可以找到你正在尋找的元素。

每個現代網絡瀏覽器(甚至IE)都有一些內置的工具,可以讓你檢查頁面的HTML,使用它,然後製作你的代碼來遍歷它。

相關問題