ruby – Watir-Webdriver是否支持点击目标为javascript的链接?
我是
Ruby和Watir-Webdriver的新手.我有一套用VBScript编写的自动化网站,我想将它转换为Ruby / Watir,因为我现在必须支持Firefox.我发现我真的很喜欢Ruby,而且我正在研究Watir,但我花了一周的时间试图让Webdriver甚至显示我的登录屏幕.
该网站以“我同意”区域的“警告屏幕”开头.用户点击我同意并出现登录屏幕. <body onload="showMessage('true')"><div id="login"><div id="message"><map name="accept"> <area href="javascript:showLogin();" shape="rect" coords="280,390,384,432" /> </map></div></div></body> 我需要点击该区域来显示登录屏幕(这是同一页面,一个表格真的,只是隐藏).我用VBScript整天做这个: objExplorer.Document.GetElementsByTagName("area")(0).click 但是,使用Watir-Webdriver,browser.area(:index,0).click什么都不做. puts browser.area(:index,0).shape =>RECT puts browser.area(:index,0).coords =>280,432 所以,我知道脚本可以“看到”区域元素并读取其属性.它对click事件没有任何作用. 如果我在href本身使用browser.goto: browser.goto("javascript:showLogin();") 登录变得可见,但我无法与元素交互(设置用户名和密码的文本字段).我正在查看打开开发人员工具窗口的页面(查看HTML),它只是说“正在加载…”. 这是我被困的地方.有趣的是,如果我使用登录表单的名称并执行以下操作: browser.form(:name,"LoginForm").submit 我从用户名和密码为空的表单中获取弹出消息,因此仍然存在一些交互. 当然,如果我手动输入用户名/密码,即使表示“正在加载……”,我也可以提交表格. 我理解“when_present.click”和等待浏览器的其他技术;这些都行不通.我的困境是我无法点击该区域,如果我在javascript上使用goto,则浏览器会忽略Watir的自动化. 谢谢你的帮助.即使回答“抱歉,Watir或Webdriver不会这样做”也是我可以接受的.它将允许我继续前进并寻找其他解决方案. 在评论中的问题后编辑: 对不起,该网站不公开,所以我无法发布链接. browser.goto("javascript:document.getElementById('overridelink').click()") 但现在我想也许这可能是问题的一部分.我已经转到我的IE(使用IE 9)选项并取消选中用于检查证书的安全选项,但无济于事.如果这可能导致问题,我将不得不与基础架构团队协商生成证书,以便我们在每次构建新服务器时下载. 解决方法
好吧,我想在阅读了数百个帖子和数小时的Google搜索后,我终于找到了解决我的问题的方法:browser.execute_script.
browser.execute_script("showLogin();") 就这么简单.使用browser.goto挂载加载页面和webdriver超时.使用execute_script非常有效! (编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |