Ruby 如何从下拉列表中选择“狗”?
现在我想选择狗,它在卡鲁->动物->狗之后,这是我要给的输入。但是现在Ruby 如何从下拉列表中选择“狗”?,ruby,selenium-webdriver,Ruby,Selenium Webdriver,现在我想选择狗,它在卡鲁->动物->狗之后,这是我要给的输入。但是现在 关键是如何选择正确的狗?Sizzle必须支持CSS选择器: driver.find_元素:css,选择选项:contains'dog':last 我认为你必须得到所有的选项,并确定每个选项的路径 以下内容适用于您的html示例。希望我没有做太多的假设 <select name="dropdown" multiple="multiple" size="2"> <option value="1">#
关键是如何选择正确的狗?Sizzle必须支持CSS选择器: driver.find_元素:css,选择选项:contains'dog':last
我认为你必须得到所有的选项,并确定每个选项的路径 以下内容适用于您的html示例。希望我没有做太多的假设
<select name="dropdown" multiple="multiple" size="2">
<option value="1">#Ram</option>
<option value="2">##animals</option>
<option value="3">###cat</option>
<option value="4">###dog</option>
<option value="5">#kalu</option>
<option value="6">##animals</option>
<option value="7">###rat</option>
<option value="8">###dog</option>
<option value="9">#jadu</option>
<option value="10">##animals</option>
<option value="11">###cat</option>
</select>
我不明白你的意思。你能澄清一下吗?我想要一个通用的解决方案。谢谢你的建议,我一定会试试的。像往常一样谢谢贾斯汀。似乎每个问题你都有答案,我见过:
#This is the option (path) you want to select
option_to_select = '#kalu->##animals->###dog'
#Get the select list
dropdown = Selenium::WebDriver::Support::Select.new(driver.find_element(:name => 'dropdown'))
#Get the text of all options
option_text = dropdown.options.collect(&:text)
#For each option, determine its full path and value
paths = {}
option_text.each_with_index do |text, index|
level = text[/^(#+)/].length
segment = option_text[0..index]
path = []
1.upto(level) do |i|
path << segment[segment.rindex{ |x| x =~ /^#{'#' * i}\w/ }]
end
paths[path.join('->')] = (index + 1).to_s
end
#Convert the desired option path to a value and select it from the dropdown
dropdown.select_by(:value, paths[option_to_select])