Ruby on rails 4 如何找到带有特定标记的CSS元素
这是我的inspect元素片段:Ruby on rails 4 如何找到带有特定标记的CSS元素,ruby-on-rails-4,rspec,css-selectors,capybara,integration-testing,Ruby On Rails 4,Rspec,Css Selectors,Capybara,Integration Testing,这是我的inspect元素片段: <div> <map> <area href="javascript:void(0)" log="miw" ... shape="poly" title="lender_marker test@example.com"> <area href="javascript:void(0)" log="miw" ... shape="poly" title="lender_marker othertest@e
<div>
<map>
<area href="javascript:void(0)" log="miw" ... shape="poly" title="lender_marker test@example.com">
<area href="javascript:void(0)" log="miw" ... shape="poly" title="lender_marker othertest@example.com">
</map>
</div>
对于#2,我甚至无法尝试它,直到我首先能够找到区域对象,但我无法…。您的CSS选择器没有问题,这让我相信这是一个可见性问题。您参考的教程使用的是
find_elements
,在Selenium中,它将查找与选择器匹配的所有元素。相反,当Capybara查找元素时,它只返回与选择器匹配的元素,并且确定用户可见
换句话说,我猜面积元素存在,但水豚认为它们不可见。你可能需要触发一些东西使这些区域变得可见
但是,无论可见性如何,都可以使用:visible
选项验证图元是否存在:
# Validate that a specific area exists in the DOM
page.should have_selector('area[title="lender_marker test@example.com"]', visible: false)
# Count the number of lender_markers
page.all('area[title^="lender_marker"]', visible: false).length
#=> 2
# Count the number of lender_markers with minimum in case of async loading
puts page.all('area[title^="lender_marker"]', visible: false, minimum: 2).length
#=> 2
# Validate the number of lender_markers
page.should have_selector('area[title^="lender_marker"]', visible: false, count: 2)
谢谢这提供了很好的洞察力,所以我查看了
保存和打开页面的情况。您在“不可见”上完全正确,但在本例中,它甚至没有加载,因为Google API不希望加载到测试服务器中。。。我在本地服务器上也遇到了这个问题,但通过启用带有config.action\u dispatch.default\u headers.merge的CORS解决了这个问题!({'Access Control Allow Origin'=>'*','Access Control Request Method'=>'*'})在application.rb
中,但我想这不会扩展到测试服务器。。。有什么想法吗?对不起,我没有使用过谷歌API,所以没有任何见解。
# Validate that a specific area exists in the DOM
page.should have_selector('area[title="lender_marker test@example.com"]', visible: false)
# Count the number of lender_markers
page.all('area[title^="lender_marker"]', visible: false).length
#=> 2
# Count the number of lender_markers with minimum in case of async loading
puts page.all('area[title^="lender_marker"]', visible: false, minimum: 2).length
#=> 2
# Validate the number of lender_markers
page.should have_selector('area[title^="lender_marker"]', visible: false, count: 2)