Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/selenium/4.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
Can';t使用selenium在href值为javascript的框架内单击锚点_Javascript_Selenium_Iframe - Fatal编程技术网

Can';t使用selenium在href值为javascript的框架内单击锚点

Can';t使用selenium在href值为javascript的框架内单击锚点,javascript,selenium,iframe,Javascript,Selenium,Iframe,无法使用selenium在href值为javascript的框架内单击锚定 @注意:我可以从IE开发者控制台手动点击/调用javascript,一切看起来都不错。问题只在于硒 下面是类似的页面源代码 <html> <body> <p> <iframe name="iframe1" width="100" height="218" src="about:blank" frameborder="0" marginwidth="0" "marg

无法使用selenium在href值为javascript的框架内单击锚定

@注意:我可以从IE开发者控制台手动点击/调用javascript,一切看起来都不错。问题只在于硒

下面是类似的页面源代码

    <html>
<body>
<p>    
<iframe name="iframe1" width="100" height="218" src="about:blank" frameborder="0" marginwidth="0" "marginheight="0" scrolling="yes">    
<html>
<body>    
<div class="className" id="DivName"onmouseover="startLinkHover(0,70)" onmouseout="stopLinkHover()">
<a name="link0" href="javascript:function()" shape=""> This is link 1 </a>
</div>
</body>
</html>
</iframe>
</p>
</body>
</html>
以下是我尝试过的: 因此,页面由iframe组成

1) 我正在切换到iframe并使用名称找到锚并单击

    driver.SwitchTo().Frame(driver.FindElement(By.Name("iframe1"));
driver.FindElement(By.XPath("//a[@name='link0']")).click();
2) 我还尝试将href属性提取到字符串变量中,并尝试使用javascript executor执行javascript

driver.SwitchTo().Frame(driver.FindElement(By.Name("iframe1"));

var js=driver.FindElement(By.XPath("//a[@name='link0']")).GetAttribute("href");

    var jsDriver = (IJavaScriptExecutor)driver;
    jsDriver.ExecuteScript(js);
请原谅,如果有任何打字错误,因为我不想在这里发布html源代码,我已经用一个示例解释了我的问题


谢谢

最后,在将.net framework目标版本指向4.5而不是4.52之后,我通过从源代码管理重新加载项目,成功地解决了这个问题(不确定为什么会这样?)


经过调查,证明问题不在于selenium单击元素,而在于加载页面后java脚本的执行。

最后,我通过将.net framework目标版本指向4.5而不是4.52后从源代码管理重新加载项目,解决了这个问题(不确定为什么会这样?)


经过调查,证明问题不在于selenium单击元素,而是在加载页面之后执行java脚本。

为什么
href=“javascript:function()”
是否从服务器返回页面,或者我看到的方式不对?正在执行的
href=“javascript:function()”
在哪里?“不能点击框架内的锚”你的意思是它没有任何作用?控制台中有错误吗?谢谢Diego,没有,它不会返回页面。奇怪的是,他们使用了来自href的javascript函数调用,而不是“onclick”等。不能单击,因为它试图调用函数,但立即返回,没有任何异常。控制台上没有错误。这是第三方应用程序,我们正在尝试与之集成,我没有太多帮助。我想知道我尝试的方式有什么问题?还有其他更好的方法。另一件令人沮丧的事情是,当运行selenium时,F12被禁用以进行调试。您尝试的第一个选项是否有任何错误?你确定你在正确的iframe中,并且在此之前没有其他具有类似名称的iframe吗?没有错误。是的,只有一个帧具有该名称。正如您从第二个选项中看到的,我能够找到该框架下的元素并读取href属性(javascript函数)并尝试实现它。我在调试时在IE上打开F12开发者工具时遇到问题。它抛出500个错误。但是如果我手动尝试(不使用selenium调试模式)打开F12时没有问题。我注意到,在调试时,即使我想直接单击,也不要通过selenium。它什么都不做。为什么
href=“javascript:function()”
是否从服务器返回页面,或者我看到的方式不对?正在执行的
href=“javascript:function()”
在哪里?“不能点击框架内的锚”你的意思是它没有任何作用?控制台中有错误吗?谢谢Diego,没有,它不会返回页面。奇怪的是,他们使用了来自href的javascript函数调用,而不是“onclick”等。不能单击,因为它试图调用函数,但立即返回,没有任何异常。控制台上没有错误。这是第三方应用程序,我们正在尝试与之集成,我没有太多帮助。我想知道我尝试的方式有什么问题?还有其他更好的方法。另一件令人沮丧的事情是,当运行selenium时,F12被禁用以进行调试。您尝试的第一个选项是否有任何错误?你确定你在正确的iframe中,并且在此之前没有其他具有类似名称的iframe吗?没有错误。是的,只有一个帧具有该名称。正如您从第二个选项中看到的,我能够找到该框架下的元素并读取href属性(javascript函数)并尝试实现它。我在调试时在IE上打开F12开发者工具时遇到问题。它抛出500个错误。但是如果我手动尝试(不使用selenium调试模式)打开F12时没有问题。我注意到,在调试时,即使我想直接单击,也不要通过selenium。它没有任何作用。
driver.SwitchTo().Frame(driver.FindElement(By.Name("iframe1"));

var js=driver.FindElement(By.XPath("//a[@name='link0']")).GetAttribute("href");

    var jsDriver = (IJavaScriptExecutor)driver;
    jsDriver.ExecuteScript(js);