Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/csharp/267.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# 使用Selenium在href中选择带有javascript的元素_C#_Selenium_Webforms - Fatal编程技术网

C# 使用Selenium在href中选择带有javascript的元素

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,

我有一个.NET Web表单,需要使用Selenium单击链接,无法使用文本内容(因为翻译问题)。如何识别此元素

<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!最终,这个答案是最接近的。我已经发布了我的最终解决方案。很高兴看到你通过了它,也很高兴我能提供帮助:-)