Selenium :: WebDriver :: Error :: ElementNotVisibleError:元素不可交互的詹金斯

时间:2019-03-22 12:59:54

标签: ruby-on-rails-4 selenium-webdriver capybara jenkins-cli

日志:

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在开发环境中都能正常工作

1 个答案:

答案 0 :(得分:0)

如果必须指定visible: false来定位元素,则您将无法单击它,因为您无法单击页面上不可见的元素。

看到这是一个单选按钮,我的最初反应是,您的CSS隐藏了实际的单选按钮,并出于样式原因将其替换为图像(使其看起来像切换按钮等)。在这种情况下,您可以让Capybara单击标签,而不是使用

choose('Full Crawl', allow_label_click: true)

但是,假设您的声明“在无头和头chrome webdriver的开发环境中都可以正常工作”表示您已经在开发环境中运行了测试,并且它们很好,这通常会表明您在您的JS。在开发环境中,一个JS文件中的错误不会阻止其余JS文件的处理,但是在测试(和生产)环境中,该JS文件被合并为一个文件,这意味着任何文件中的错误都可以防止在运行该错误之后,JS被串联。访问页面时检查您的浏览器控制台,并修复报告的所有错误。