我有 Watir 代码,使用 Phantomjs 作为无头浏览器。我尝试使用此代码在网站上填写表单(因为Phantomjs在简单点击(browser.link(id: 'choise-sity').click)
)时不会显示模式:
require 'watir'
browser = Watir::Browser.new :phantomjs
browser.goto 'http://sales.ubrr.ru/open'
browser.execute_script(" $('#modalCityChoise').show();$('#modalCityChoise').css({'opacity':'1', 'top':'0'})")
browser.link(text: 'Архангельск').click
browser.screenshot.save 'a.png'
当前代码确实显示模态,但我之后无法点击其中的链接 我的问题是:是否有更简单的方法来处理PhantomJS中的模态 - 他们说他们增加了对模态的支持?或者如何通过javascript注入来处理这个特定的例子?
编辑:我设法通过更改隐藏输入browser.execute_script(" $('#OpenBkiForm_city_code').val('4600000100000') ")
的值来处理此模式 - 但问题仍然存在。
答案 0 :(得分:3)
我误解了这个问题 - 模型由Phantomjs正确管理,但我无法证明这一点,因为在我的截图时它们才开始淡入,我没有想到。
真正的问题是我无法按下模态窗口中的按钮。事实证明这是因为窗口大小 - 即使截图捕获了按钮,Watir也无法以某种方式访问它。这解决了整个问题:
$browser.driver.manage.window.maximize
答案 1 :(得分:1)
模态可以不同方式实现。有时它们是动画的,这使得必须等到它们完全可见,然后再进一步处理它们。
在您的情况下,您可以使用Wait:until:
browser.goto 'http://sales.ubrr.ru/open'
Watir::Wait.until { browser.a(:id => "modalCityChoise").visible? }
browser.link(text: 'Архангельск').click
browser.screenshot.save 'a.png'