2010-12-21 66 views
0

這些空間不是由我在HTML SIDE上添加的,我無法編輯HTML 我想知道我的比較字符串應該是什麼?HTML字符串未得到驗證

我使用華廷自動化網站測試的過程,但我不能遇到只有一個button.Every等作品

華廷按名稱/值/ ID和更多的搜索內容和工作正常,但是當我看到提交按鈕,我需要被點擊它有一些休息&收縮壓,所以我覺得他們是在玩一些角色

這裏的值是HTML:

<span class='button'><input type="submit" value="&nbsp;&nbsp;&nbsp;Login&nbsp;&nbsp;&nbsp;" /></span>&nbsp;&nbsp;&nbsp; 
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 
<span class='button'><input type="button" value="&nbsp;&nbsp;&nbsp;Back&nbsp;&nbsp;&nbsp;" onclick="history.back(-1)" /></span> 

這裏是要搜索的代碼

browser.Button(WatiN.Core.Find.ByValue("&nbsp;&nbsp;&nbsp;Login&nbsp;&nbsp;&nbsp;")).Click(); 

可以做些什麼?

+1

這真的不公平,人們對這個問題低估,當時他們大概甚至不知道什麼是WatiN。 – prostynick 2010-12-22 07:16:31

回答

2

你不應該使用WatiN的實體。

此代碼將工作,但你必須使用真正的不間斷空格字符

browser.Button(
    WatiN.Core.Find.ByValue(
     "   Login   ")).Click(); 

這可能是不方便的,但你可以HttpUtility類(添加引用System.Web後)使用方法:

browser.Button(
    WatiN.Core.Find.ByValue(
     System.Web.HttpUtility.HtmlDecode(
      "&nbsp;&nbsp;&nbsp;Login&nbsp;&nbsp;&nbsp;"))).Click(); 

但是,如果我是你,我只想去與Regex

browser.Button(
    WatiN.Core.Find.ByValue(
     new Regex(@"^\s*Login\s*$"))).Click(); 

或甚至new Regex("Login")。有趣的事情:如果你將不得不Find.ByText你不必打擾這麼多,你可以使用規則的空間(即不完全不休息的空間)。這是因爲本機IE IHTMLElement::getAttribute(http://msdn.microsoft.com/en-us/library/aa752280(VS.85).aspx)將&nbsp;innertext屬性轉換爲常規空間,但從value,id等它doesn' t(&nbsp;都轉換成真正的非破空格 - 0xA0

3

- 建議 - (即太大評論)

你不應該使用&nbsp;爲空格添加到提交按鈕。相反,你應該使用CSS來設計你喜歡的按鈕。所以你會有這樣的東西:

input[type=button] { 
    padding:10px; 
    min-width: 150px; 
} 

同樣,這可以消除您選擇按鈕時遇到的任何問題。這可能是編碼與watin斷開的問題,因此,使用CSS進行此操作將使調試問題變得更加簡單和容易。

編輯: 您是否嘗試過使用ID進行搜索而不是按值進行搜索? ID在頁面上應該是唯一的,所以如果它沒有通過這些方式找到它,那麼這是一個可以排除的問題。這也可能是您正在搜索按鈕的事實。 A <button><input type="button">不一樣。

編輯2:即使問題是由於編碼中斷,我仍然建議您重置該按鈕以重置文本(刪除所有非空白區域)並附加一個id /名稱。原因是出於國際化目的 - 如果由於某種原因您修改了設計器中按鈕的大小,或者在應用程序和文本不同的情況下,您的測試將會中斷。

+0

Afnan剛剛編輯他的帖子:這不是他的html。 (-1,讓我知道當你改變帖子) – Crisfole 2010-12-21 20:37:39

+0

即使沒有編輯,它是顯而易見的,該操作使用WatiN,所以如果有人不知道它是什麼,我認爲他/她不應該回答這個問題。 -1,因爲答案與問題無關。 – prostynick 2010-12-22 07:18:54

0

哇,你真的很喜歡空間!我會刪除這些和使用填充/頁邊距如html被設計爲使用。那麼你不會需要所有這些空間,你可以給你的按鈕分配一個適當的值,它可以識別。

0

我認爲這是因爲HTML源碼中的&nbsp;實際上是表示沒有空格的特殊字符的轉義版本。所以在你的C#源代碼中,你可能需要這個字符而不是html實體代碼。我想你可以通過使用這個按鈕來提交一個GET表單來找到那個角色的代碼。它會顯示url中的轉義字符代碼。

當然,最好不要把空間放在那裏。您應該使用CSS來爲按鈕填充填充。