我目前正在使用Cucumber / Selenium / Ruby来创建我的自动化框架并设置我的第一个测试。我正在处理的那个涉及我填写表格以进入下一阶段。表单包含一个包含多个值的下拉列表,我想从中选择一个(和任何一个!)
检查下拉菜单中的元素
<input type="search" class="ember-power-select-trigger-multiple-input" autocomplete="off" autocorrect="off" autocapitalize="off" spellcheck="false" id="ember-power-select-trigger-multiple-input-ember3325" aria-controls="ember-power-select-options-ember3325" style="width: 100%;" placeholder="All classes">
因此我在下面的步骤中使用了class
:
我的步骤
@wait.until {@driver.find_element(:css => 'input.ember-power-select-trigger-multiple-input').click}
目前,当我运行此功能时,它能够找到正确的下拉选项并单击它。列表中的选项出现,但显然没有任何反应。
我想知道的是我如何进一步扩展这一点以便选择下拉列表,以及&#34;第一个&#34;选项被选中?我不想指定它应该是什么,但它应该从列表中随机选择第一个并使用它。
有关实现这一目标的最简单方法的任何想法吗?
Research Snippet
我做了一些研究,发现以下片段,我认为我可以添加到我的代码中,但我不确定它是否真的有用,或者我是否可以将它与@wait.until
步骤一起使用上文提到的?
groupDropdown = @driver.find_element(:css => 'input.ember-power-select-trigger-multiple-input')
option = groupDropdown.find_element(:css, "option:nth-child(1)")
option.click
答案 0 :(得分:1)
@wait.until {@driver.find_element(:css => 'input.ember-power-select-trigger-multiple-input').click}
@wait.until {@driver.find_element(:css => '.ember-view > li > .ember-view > li:nth-of-type(1) > .ember-view > li').click}
这很有用。
答案 1 :(得分:0)
Selenium中的“until”方法需要“truthy”响应才能继续使用其余代码。
你能做的是:
power_select = @driver.find_element(:css => 'input.ember-power-select-trigger-multiple-input')
@wait.until {power_select.displayed?}
power_select.click
这将等待元素显示在页面上,返回一个布尔值,然后点击一下
继续之后,选择的方法很好地隐藏在库中,但是在搜索了一下之后:
按文字选择:
Selenium::WebDriver::Support::Select.new(@driver.find_element(:css => <insert_css_of_select_here>)).select_by(:text, <insert_option_text_here>)
按索引选择:
Selenium::Webdriver::Support::Select.new(@driver.find_element(:css => <insert_css_of_select_here>)).select_by(:index, <insert_index_value_here>)
通过索引选择您最想要做的事情,将索引值设置为0以选择第一个选项。
答案 2 :(得分:0)
这将允许您选择Capybara的ember-power-select所需选项:
find('.ember-power-select-trigger').click # Open trigger
find_all('ul.ember-power-select-options > li')[1].click # Select 2nd option
经过最新的ember-power-select测试。
如果您的Capybara.default_max_wait_time
很高,您可能会发现点击速度很慢,因此可以进一步加快速度:
find('.ember-power-select-trigger').click # Open trigger
Capybara.using_wait_time(0.1) do
find_all('ul.ember-power-select-options > li')[1].click # Select 2nd option
end