C# Watin元素缓存

C# Watin元素缓存,c#,javascript,html,watin,web-testing,C#,Javascript,Html,Watin,Web Testing,我用的是C#和Watin 想象一下以下场景: 我使用元素的innerHTML/Find.ByText搜索它 return Document.Element(Find.ByText(Localisation.CommandHeader)); CommandHeader.SetAttributeValue("Innerhtml", "Save Template"); CommandHeader.SetAttributeValue("onclick", ".."); 然后,我更改元素文本,并希望使

我用的是C#和Watin

想象一下以下场景:

我使用元素的innerHTML/Find.ByText搜索它

return Document.Element(Find.ByText(Localisation.CommandHeader));

CommandHeader.SetAttributeValue("Innerhtml", "Save Template");
CommandHeader.SetAttributeValue("onclick", "..");
然后,我更改元素文本,并希望使用Element.setAttributeValue在其上添加onclick事件。 现在Watin抛出了一个异常,告诉我它找不到标准为Innerhtml(..)的元素

将元素保存到局部变量没有帮助

我还尝试在两个命令之间添加CommandHeader.Refresh()

在撰写本文时,我想到了这样一个想法:首先为元素分配一个id,然后仅使用该id作为选择器来访问它。然而,我还没有测试它


有更好的办法吗?感谢您的帮助。

您只能设置属性值,但不能通过WatiN创建属性。如果
InnerHtml
属性已存在,则可以更改该属性已存在。但是为什么一个人不能这样做呢?对我来说,要求javascript创建新属性没有多大意义。Watin应该真的有这个功能。Watin没有这样做的API。Watin主要用于Web UI测试,作为测试的一部分,没有人创建/更新属性。