C# HTML字符串未得到验证
这些空格不是我在HTML端添加的,我无法编辑HTML 我想知道我的比较字符串应该是什么? 我正在使用watin自动化网站测试过程,但我无法遇到只有一个按钮。每一个按钮都有效 watin按名称/值/id等搜索内容,效果很好,但当我看到需要单击的submit按钮的值时,它有一些中断&nsbp,因此我认为它们在发挥作用 以下是html:C# HTML字符串未得到验证,c#,watin,C#,Watin,这些空格不是我在HTML端添加的,我无法编辑HTML 我想知道我的比较字符串应该是什么? 我正在使用watin自动化网站测试过程,但我无法遇到只有一个按钮。每一个按钮都有效 watin按名称/值/id等搜索内容,效果很好,但当我看到需要单击的submit按钮的值时,它有一些中断&nsbp,因此我认为它们在发挥作用 以下是html: <span class='button'><input type="submit" value=" &
<span class='button'><input type="submit" value=" Login " /></span>
<span class='button'><input type="button" value=" Back " onclick="history.back(-1)" /></span>
能做些什么 --建议--(即太大,无法发表评论)
您不应该使用
向提交按钮添加空格。相反,您应该使用CSS根据自己的喜好设置按钮的样式。所以你会有这样的想法:
input[type=button] {
padding:10px;
min-width: 150px;
}
同样,这可以消除您在选择按钮时遇到的任何问题。这可能是编码与watin冲突的问题,因此,使用CSS进行此操作将使调试问题更清晰、更容易
编辑:
您是否尝试过按ID而不是按值搜索?ID在页面上应该是唯一的,所以如果它不能通过这些方法找到它,那么这是一个可以排除的问题。也可能是因为你正在搜索一个按钮。
与
不同
编辑2:即使问题是由于编码中断造成的,我仍然建议您重置该按钮以重置文本(删除所有非中断空格)并为其附加id/名称。原因是出于国际化目的-如果出于某种原因您在designer中修改了按钮的大小,或者i18n应用程序和文本不同,您的测试将中断。--建议--(即太大,无法发表评论)
您不应该使用
向提交按钮添加空格。相反,您应该使用CSS根据自己的喜好设置按钮的样式。所以你会有这样的想法:
input[type=button] {
padding:10px;
min-width: 150px;
}
同样,这可以消除您在选择按钮时遇到的任何问题。这可能是编码与watin冲突的问题,因此,使用CSS进行此操作将使调试问题更清晰、更容易
编辑:
您是否尝试过按ID而不是按值搜索?ID在页面上应该是唯一的,所以如果它不能通过这些方法找到它,那么这是一个可以排除的问题。也可能是因为你正在搜索一个按钮。
与
不同
编辑2:即使问题是由于编码中断造成的,我仍然建议您重置该按钮以重置文本(删除所有非中断空格)并为其附加id/名称。原因是出于国际化目的——如果出于某种原因,您在designer中修改了按钮的大小,或者i18n应用程序和文本不同,您的测试将中断。哇,您真的喜欢空格!我会删除这些内容并使用填充/边距,就像html被设计用来使用一样。然后你就不需要所有的空格,你可以给你的按钮指定一个合适的值,watiN会识别出来。哇,你真的很喜欢空格!我会删除这些内容并使用填充/边距,就像html被设计用来使用一样。然后你就不需要所有的空格,你可以给你的按钮分配一个合适的值,watiN会识别它。我认为这是因为HTML源代码中的
实际上是一个特殊字符的转义版本,代表一个不间断的空格。因此,在C#源代码中,可能需要该字符而不是html实体代码。我认为您可以通过使用此按钮提交GET表单来找到该角色的代码。它将在url中显示转义字符代码
当然,最好不要把空间放在那里。您应该使用CSS为按钮添加填充。我认为这是因为HTML源代码中的
实际上是一个特殊字符的转义版本,它表示一个不间断的空格。因此,在C#源代码中,可能需要该字符而不是html实体代码。我认为您可以通过使用此按钮提交GET表单来找到该角色的代码。它将在url中显示转义字符代码
当然,最好不要把空间放在那里。您应该使用CSS为按钮添加填充。您不应该将实体与WatiN一起使用 此代码可以工作,但必须使用真正的不间断空格字符:
browser.Button(
WatiN.Core.Find.ByValue(
" Login ")).Click();
这可能不方便,但您可以使用(在添加对System.Web
的引用后)HttpUtility
类:
browser.Button(
WatiN.Core.Find.ByValue(
System.Web.HttpUtility.HtmlDecode(
" Login "))).Click();
但是,如果我是你,我只会选择Regex
:
browser.Button(
WatiN.Core.Find.ByValue(
new Regex(@"^\s*Login\s*$"))).Click();
甚至新的正则表达式(“登录”)
有趣的事情:如果你需要
查找.ByText
,你不需要太麻烦,而且你可以使用规则空间(即不完全是非中断空间)。这是因为本地IEIHTMlement::getAttribute
(http://msdn.microsoft.com/en-us/library/aa752280(VS.85).aspx)将
属性从innertext
转换为常规空格,但将值、id
等转换为常规空格。它不会(
转换为真正的不间断空格-0xA0
)您不应该将实体与WatiN一起使用
此代码可以工作,但必须使用真正的不间断空格字符:
browser.Button(
WatiN.Core.Find.ByValue(
" Login ")).Click();
这可能不方便,但您可以使用(在添加对System.Web
的引用后)HttpUtility
类:
browser.Button(
WatiN.Core.Find.ByValue(
System.Web.HttpUtility.HtmlDecode(
" Login "))).Click();
但是,如果我是你,我只会选择Regex
:
browser.Button(
WatiN.Core.Find.ByValue(
new Regex(@"^\s*Login\s*$"))).Click();
甚至新的正则表达式(“登录”)
有趣的事情:如果你需要查找.ByText
,你不需要太麻烦,你可以使用regu