2010-12-21 1 views
0

이 공백은 HTML SIDE에 나에게 추가되지 않으며 HTML을 편집 할 수 없습니다. 내 비교 문자열을 알고 싶습니다. 나는 웹 사이트 테스트 과정을 자동화하는 watin 사용하고 있지만 단 하나의 button.Every 작품을 만날 드릴 수 없습니다HTML 문자열이 확인되지 않습니다.

이름/값/ID와 더 많은하여 콘텐츠를 검색하고 잘 작동하지만 watin

내가 볼 때 내가 그것을 내가 그들이 어떤 역할 여기

을 재생하는 생각 약간의 휴식을 & nsbp 그래서이 클릭 할 필요가 제출 버튼의 값은 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

답변

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) 에서 innertext 특성을 정규 공간으로 변환하지만 value, id 등으로 변환하기 때문입니다. t (&nbsp;은 실제 깨지지 않는 공백으로 변환됩니다. 0xA0)

+0

당신은 위대합니다. 이것은 wellbrowser.Button ( WatiN.Core.Find.ByValue ( 새로운 Regex (@ "^ \ s * 로그인 \ s * $")))을 클릭하는 것보다 더 효과적입니다. @ "^ \ s * Login \ s * $"에 대한 지식을 갖고 싶습니다.이 문자열의 의미는 무엇입니까 ?? –

+0

이것은 .Net'Regex' 클래스에서 사용하는 정규 표현식입니다. 그것에 대해 아무 것도 모른다면 큰 주제입니다. 간단히 말해서,이 특별한 표현식'^ \ s * Login \ s * $'는 공백으로 시작하고 끝나는 모든 값과 일치하며'Login' 부분을 내부에 가지고 있습니다. – prostynick

3

- 제안 - (주석에 대한 즉 너무 커서는)

당신은 제출 버튼에 공간을 추가 할 &nbsp;을 사용할 수 없습니다. 오히려 CSS를 사용하여 원하는대로 단추 스타일을 지정해야합니다. 그래서 당신은 같은 것이다 : 같은 토큰에 의해

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

을,이 버튼을 선택하여 발생하는 문제 중 하나를 제거 할 수 있습니다. 인코딩 문제이 watin으로 깨져서 결과적으로 CSS로이 문제를 해결하면 문제를 훨씬 더 간단하고 쉽게 디버깅 할 수 있습니다.

편집 : 값으로 검색하는 대신 ID로 검색해 보셨습니까? ID는 페이지에서 고유 한 것으로 간주되므로 이러한 수단으로 ID를 찾지 못하면 규칙을 벗어날 수 있습니다. 단추를 검색하는 것도 사실 일 수 있습니다. <button><input type="button">과 같지 않습니다.

편집 2 : 문제가 인코딩의 파괴로 인해 였지만, 나는 아직도 당신이 (모든 비 파괴 공간 제거) 텍스트를 재설정과에 ID/이름을 붙이는 그 버튼을 재설정하는 것이 좋습니다. 국제화를위한 이유입니다. 어떤 이유에서든 디자이너의 버튼 크기를 수정하거나 응용 프로그램과 텍스트가 다른 경우 테스트가 중단됩니다.

+0

Afnan이 자신의 게시물을 편집했습니다. HTML이 아닙니다. (-1, 게시물을 바꿀 때 알려주세요) – Crisfole

+0

편집을하지 않아도 Op는 WatiN을 사용하므로 누군가가 무엇인지 모를 경우 질문에 대답해서는 안됩니다. -1, 답은 질문과 관련이 없기 때문입니다. – prostynick

+0

수정 됨 - 제목이 추가되었습니다 :). 그리고 내 대답은 그 질문과 관련이 없다고 나는 믿지 않는다. 그것은 인코딩에 관한 문제 였고, Afnan이 ID로 검색을 시도하고 CSS를 사용하여 스타일링을 시도하는 것이 가장 좋을 것이라고 생각합니다 (편집 2 참조). – MunkiPhD

0

와우, 정말 공백을 좋아합니다! 나는 그것들을 제거하고 html과 같은 패딩/여백을 사용하도록 고안되었습니다. 그런 다음 모든 공간이 필요 없으며 인식 할 수있는 버튼에 적절한 값을 지정할 수 있습니다.

0

HTML 소스의 &nbsp;이 실제로는 깨지지 않는 공간을 나타내는 특수 문자의 이스케이프 된 버전이기 때문에 생각합니다. 따라서 C# 소스에서는 html 엔티티 코드 대신 해당 문자가 필요합니다. 이 단추를 사용하여 GET 양식을 제출하면 해당 문자의 코드를 찾을 수 있다고 생각합니다. 이스케이프 된 문자 코드가 URL에 표시됩니다.

물론 공백을 넣지 않는 것이 좋습니다. 대신 CSS를 사용하여 버튼에 패딩을 지정해야합니다.