C# 使用Selenium在href中选择带有javascript的元素
我有一个.NET Web表单,需要使用Selenium单击链接,无法使用文本内容(因为翻译问题)。如何识别此元素C# 使用Selenium在href中选择带有javascript的元素,c#,selenium,webforms,C#,Selenium,Webforms,我有一个.NET Web表单,需要使用Selenium单击链接,无法使用文本内容(因为翻译问题)。如何识别此元素 <a href="javascript:__doPostBack('ctl01','')">registration form</a> 尝试搜索a href而不是id,如下所示: a[@href='javascript:uu doPostBack('ctl01','') 使用FindElementsByXPath 然后在var元素上尝试使用SendKeys,
<a href="javascript:__doPostBack('ctl01','')">registration form</a>
尝试搜索a href而不是id,如下所示:
a[@href='javascript:uu doPostBack('ctl01','')
使用FindElementsByXPath
然后在var元素上尝试使用SendKeys,如下所示:
element.SendKeys(Keys.Enter);
尝试搜索a href而不是id,如下所示:
a[@href='javascript:uu doPostBack('ctl01','')
使用FindElementsByXPath
然后在var元素上尝试使用SendKeys,如下所示:
element.SendKeys(Keys.Enter);
问题是您试图在xpath中查找id,而元素不包含id
在这种情况下,这应该起作用:
var element = Driver.FindElementsByXPath($"//a[contains(text(), 'registration form')]");
只有当您试图查找的所有元素都是与其中的文本注册表的链接时,这才有效
如果要在href上查找元素,请使用:
var element = Driver.FindElementsByXPath
("//a[contains(@href, 'javascript:__doPostBack('ctl01','')')]");
问题是您试图在xpath中查找id,而元素不包含id
在这种情况下,这应该起作用:
var element = Driver.FindElementsByXPath($"//a[contains(text(), 'registration form')]");
只有当您试图查找的所有元素都是与其中的文本注册表的链接时,这才有效
如果要在href上查找元素,请使用:
var element = Driver.FindElementsByXPath
("//a[contains(@href, 'javascript:__doPostBack('ctl01','')')]");
最终决定通过部分字符串在href
属性中标识:
.FindElementsByXPath($"//*[contains(@href, '{id}')]")
这是因为将javascript文本的整个值放入Selenium调用导致其解析失败。最终决定在href
属性中通过部分字符串进行标识:
.FindElementsByXPath($"//*[contains(@href, '{id}')]")
这是因为将javascript文本的全部值放入Selenium调用中导致其解析失败。使用更多的outerHTML
更新问题。使用更多的outerHTML
更新问题。您是对的-编辑以显示我的实际代码包括href,而不是id.D'oh!最终,这个答案是最接近的。我已经发布了我的最终解决方案。很高兴看到你通过了它,很高兴我能提供帮助:-)你是正确的-编辑显示我的实际代码包括href,而不是id.D'oh!最终,这个答案是最接近的。我已经发布了我的最终解决方案。很高兴看到你通过了它,也很高兴我能提供帮助:-)