黄瓜栏中的通用点击步骤(含和不含硒)
我想做一个通用的点击步骤,我可以在有和没有@javascript标志的场景中调用。黄瓜栏中的通用点击步骤(含和不含硒)
到目前为止,它是:
When(/^I click "([^"]*)"$/) do |clickable|
click_on(clickable)
end
它工作正常,当不使用的webdriver。但是当我使用WebDriver时,它将焦点放在链接或按钮上,但不会单击它。
如果我模拟按下“Enter”,那么它对WebDriver工作正常,但在纯水豚测试中引发异常。
有没有一种方法可以同时使用两个步骤?
UPDATE:
通过将sleep 1
点击之前,我设法单击工作联系(高度怀疑,它是有效的)。在这一点上,我在页面中没有javascript或异步加载。但点击按钮仍然无法正常工作。
您显示的代码应该在使用硒和不使用硒的情况下正常工作。如果不是这样,通常意味着你有一些阻止点击的JS代码,或者使用最近版本的selenium-webdriver,你的元素可能隐藏在其他元素的后面(例如固定的页眉/页脚栏) - 尽管通常会显示错误。
假设每次点击都没有失败,那么你需要看看那些失败的东西,看看正在做什么常见的事情(也许发布一些html) - 因为你说1秒的睡眠修复它,我想你有一些字段被JS库转换和点击被忽略,直到库完成转换元素。
我从页面中拿出所有的javascript,然后链接工作。虽然当我尝试用同一步提交表单时,它什么也没做(即使没有javascript)。这是奇怪的,虽然,JavaScript是防止点击该链接,因为该页面中没有被引用或在JavaScript中完成。 – Kkulikovskis
听起来好像你有委派的监听者有点过分热衷于他们抓住的点击,或者你的JS中可能存在一些错误,这些错误会阻止你认为应该从实际发生的JS(远程表单提交等) - 添加你的问题的一些例子html会有所帮助 –
你或许可以尝试找到使用css选择器单击的元素,然后单击该元素。
def click_element(selector)
begin
el = find(:css, selector)
rescue Capybara::ElementNotFound => e
puts "Element with Selector - #{selector} not found on the page"
raise e
end
call_click el
end
def call_click (selector)
if (IS_HEADLESS)
selector.trigger('click')
else
selector.click
end
end
尝试'find_link(LINK_NAME).trigger(:点击)' –
@OlegSobchuk我希望它与磁盘后链接和按钮 – Kkulikovskis
找到工作(:link_or_button,定位器).trigger(:点击) –