【问题标题】:Capybara cannot find dropdown (Capybara/Rspec)Capybara 找不到下拉菜单(Capybara/Rspec)
【发布时间】:2016-05-02 19:35:16
【问题描述】:

我知道有很多此类问题,但我尝试了一些解决方案,但都没有成功。

这里是下拉菜单的来源:

<select style="display: none;" name="Select_Company" id="Select_Company" class="company-list-select">

然后下面只是一堆普通的选项值:IE:

<option value="2">Generic Company</option>

(这当然是重复的)。

这就是我尝试过的:

select('GenericCompany', :from => 'Select_Company')
select('Select_Company')select('Generic Company', :from => 'Select_Company')

我也尝试过(我想这不起作用,因为“请选择公司”文本在技术上是一个选项:

select 'ACME', from: "Please Select a Company"

所有这些都会导致无法找到元素错误。有任何想法吗?我不确定要尝试什么。

这是使用 Capybara 和 Rspec,其余代码都很好,因为它可以工作到这里(我们从下拉列表中选择)。唯一我认为奇怪的事情(我没有写这个网站)是在选择下拉类之后:

<div id="Select_Company_chosen" title="" style="width: 100%;" class="chosen-container chosen-container-single"><a class="chosen-single" tabindex="-1"><span>Please Select a Company</span><div><b></b></div></a><div class="chosen-drop"><div class="chosen-search"><input autocomplete="off" type="text"></div><ul class="chosen-results"><li data-option-array-index="0" style="" class="active-result result-selected">Please Select a Company</li><li data-option-array-index="1" style="" class="active-result">

【问题讨论】:

    标签: rspec capybara


    【解决方案1】:

    查看您的选择,它有“style=display:none”,这表明它在页面上不可见。我假设它已在页面上被一个 JS 驱动的小部件替换,你的最后一行似乎显示了。因此,您不能只使用 select (它只适用于真正可见的

    page.find('.chosen-drop').click
    page.find('li', text: 'the text of the item to select').click
    

    【讨论】:

    • 不幸的是,我只是得到“无法找到 css”.chosen-drop“”是“。”选择器始终是“page.find”中的类。 .chosen-single 但是确实有效。试错我猜哈哈
    • @msmith1114。是的,'chosen-drop' 是基于您显示的 HTML 和类名的猜测,这完全取决于页面上实际可见的内容以及小部件的工作方式
    猜你喜欢
    • 2018-02-15
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多