gpt4 book ai didi

jquery - 测试拖放不起作用 rspec/capybara/selenium/jquery

转载 作者:行者123 更新时间:2023-12-01 04:45:31 24 4
gpt4 key购买 nike

我正在使用:

  • rspec
  • capybara
  • Selenium
  • jquery ui 可排序
  • ruby
  • rails

这段代码:

expect(find_by_id("note0").text).to eq(note_placeholder.to_s + "0")
expect(find_by_id("note1").text).to eq(note_placeholder.to_s + "1")
expect(find_by_id("note2").text).to eq(note_placeholder.to_s + "2")
source=find_by_id("combo0")
target=find_by_id("combo1")
source.drag_to(target)
expect(find_by_id("note0").text).to eq(note_placeholder.to_s + "1")
expect(find_by_id("note1").text).to eq(note_placeholder.to_s + "0")
expect(find_by_id("note2").text).to eq(note_placeholder.to_s + "2")

...不会引发错误,但是

expect(find_by_id("note0").text).to eq(note_placeholder.to_s + "1")

...失败

 Failure/Error: expect(find_by_id("note0").text).to eq(note_placeholder.to_s + "1")

expected: "imaging_step_note1"
got: "imaging_step_note0"

drag_to 似乎不起作用。有没有一个好的方法来确认这确实是问题所在?有没有好的解决方法?

在 rspec 之外,拖放和后续排序工作正常。什么样的规范会在 rspec 中测试这个?

编辑:这似乎提供了一些希望,但我不确定我是否理解得很好:
https://github.com/mattheworiordan/jquery.simulate.drag-sortable.js/blob/master/README.md

这是一个好的选择吗?看来一定有更好的方法,不是吗?这不是要测试的常见功能吗?我错过了什么?

编辑2:
2011 年的另一个选项:
https://ynot408.wordpress.com/2011/09/22/drag-and-drop-using-selenium-webdriver/...尽管目前我无法理解单行长长的 JavaScript。

编辑3:基于此:
http://www.seleniumhq.org/docs/03_webdriver.jsp#setting-up-webdriver-project

...我尝试了这段代码:

source = page.driver.browser.find_element(:id, 'combo0')
target = page.driver.browser.find_element(:id, 'combo1')
page.driver.browser.action.drag_and_drop(source, target).perform
sleep 5

...但我仍然得到:

Failure/Error: expect(find_by_id("note0").text).to eq(note_placeholder.to_s + "1")

expected: "imaging_step_note1"
got: "imaging_step_note0"

编辑4:
刚刚从 2.42.0 更新到 selenium-webdriver (2.45.0) 相同的结果。现在唯一的区别是规范似乎运行得慢得多。恢复到 2.42.0。

编辑5:如果我添加:

sleep 15

...并手动执行拖放,rspec 测试通过。一切似乎都表明在鼠标左键释放事件之后应该发生的任何事情都失败了。

最佳答案

您的问题是您在预期中使用 find(...).text 。元素的查找以及其文本的提取是在放置生效之前发生的。您想要使用的是

expect(page).to have_css('#note0', text: note_placeholder.to_s + "1")

这将导致 Capybara 等待元素 #note0 的最大默认等待时间,并指定文本内容出现在页面上

关于jquery - 测试拖放不起作用 rspec/capybara/selenium/jquery,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/30495708/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com