日志:
Organization flow Successfull case Organization should be created successfully.
Failure/Error: find('#submit_requirements_crawl_type_1', visible: false).click
Selenium::WebDriver::Error::ElementNotVisibleError:
element not interactable
(Session info: headless chrome=72.0.3626.119)
(Driver info: chromedriver=2.46.628388 (4a34a70827ac54148e092aafb70504c4ea7ae926),platform=Linux 4.9.0-7-amd64 x86_64)
我尝试了堆栈溢出和其他两个站点中存在的最大示例。
少量代码示例:
find(:xpath, "//label[@for='submit_requirements_crawl_type_1']").click
find(:xpath, "//label[@for='submit_requirements_output_format_0']").click
find('#submit_requirements_crawl_type_1', visible: false).click
find('#submit_requirements_output_format_0', visible: false).click
find('label', text: "submit_requirements_crawl_type_2").click
find('label', text: "submit_requirements_output_format_0").click
choose('Full Crawl', :visible => true)
choose('JSON', :visible => true)
<div class="radio radio-info radio-inline">
<input type="radio" value="1" name="submit_requirements[crawl_type]" id="submit_requirements_crawl_type_1">
<label for="submit_requirements_crawl_type_1">Full Crawl</label>
</div>
注意:
通过无头和头式镀铬webdriver在开发环境中都能正常工作
答案 0 :(得分:0)
如果必须指定visible: false
来定位元素,则您将无法单击它,因为您无法单击页面上不可见的元素。
看到这是一个单选按钮,我的最初反应是,您的CSS隐藏了实际的单选按钮,并出于样式原因将其替换为图像(使其看起来像切换按钮等)。在这种情况下,您可以让Capybara单击标签,而不是使用
choose('Full Crawl', allow_label_click: true)
但是,假设您的声明“在无头和头chrome webdriver的开发环境中都可以正常工作”表示您已经在开发环境中运行了测试,并且它们很好,这通常会表明您在您的JS。在开发环境中,一个JS文件中的错误不会阻止其余JS文件的处理,但是在测试(和生产)环境中,该JS文件被合并为一个文件,这意味着任何文件中的错误都可以防止在运行该错误之后,JS被串联。访问页面时检查您的浏览器控制台,并修复报告的所有错误。