Selenium :: WebDriver :: error :: Element notvisibleRorr:ele



logs:

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>

注意:

它在开发环境中均可使用无头和头部Chrome Webdriver

如果必须指定 visible: false才能找到一个元素,则无法单击它,因为您无法单击页面上不可见的元素。

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

choose('Full Crawl', allow_label_click: true)

但是,假设您的陈述"它在无头和chrome Webdriver的开发环境中正常工作",则意味着您已经在开发环境中运行测试,它们很好,它倾向于表明您在某处有错误你的JS。在开发环境中,一个JS文件中的错误并不能阻止其余的JS文件进行处理,但是在测试(和生产)环境中,JS文件被串联到一个文件中,这意味着任何文件中的错误都可以防止JS在运行该错误后加入了串联。访问页面时检查您的浏览器控制台并修复报告的任何错误。

最新更新