【问题标题】:Can't click on the anchor inside a frame with href value as javascript using selenium使用 selenium 无法单击带有 href 值的框架内的锚点作为 javascript
【发布时间】:2017-02-13 17:20:54
【问题描述】:

使用 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>

我正在使用 c#、IE 和 selenium

Selenium.WebDriver.IEDriver" version="2.53.1.1"
Selenium.WebDriver" version="3.0.0"
Selenium.Support" version="3.0.0" 
IE 11 ( As my web application only support IE)

这是我尝试过的: 因为它的页面是由 iframe 组成的

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

    driver.SwitchTo().Frame(driver.FindElement(By.Name("iframe1"));
driver.FindElement(By.XPath("//a[@name='link0']")).click();

2)我还尝试将 href 属性提取到字符串变量中,并尝试使用 Javascript 执行器执行 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 源代码,我已经用示例解释了我的问题。

谢谢

【问题讨论】:

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

标签: javascript selenium iframe


【解决方案1】:

最后,在将 .net 框架目标版本指向 4.5 而不是 4.52 后,我通过从源代码管理重新加载项目来解决此问题(不知道为什么会这样?)。

经过调查,证明不是硒点击元素的问题,而是页面加载后执行java脚本。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2020-11-10
    • 1970-01-01
    • 1970-01-01
    • 2019-09-04
    • 1970-01-01
    • 1970-01-01
    • 2011-11-04
    • 2018-02-08
    相关资源
    最近更新 更多