如果select_list是出生日期并且有三个下拉列表,那该怎么办:
e.g。
select class="custom-select__select" data-bind="customSelect, options: dates, optionsText: 'name', optionsValue: 'id', value: date" style="opacity: 0;"
select class="custom-select__select" data-bind="customSelect, options: months, optionsText: 'name', optionsValue: 'id', value: month" style="opacity: 0;"
select class="custom-select__select" data-bind="customSelect, options: years, optionsText: 'name', optionsValue: 'id', value: year" style="opacity: 0;"
它们仅在数据绑定选项和值属性方面有所不同。
如何为这些人获得正确的xpath
?
谢谢!
答案 0 :(得分:0)
使用contains
功能可以实现这一目标。
//select[contains(@data-bind,'dates')] #change the data-bind value to month or years or whatever
编辑:OP添加屏幕截图后的新选择器 您需要做的就是使用一些等待元素存在(不可见)并传递所需国家/地区的选项值
以下xpath
应直接找到select
代码
//select[contains(@data-bind,'dates')]/option[@value='" + country + "']
答案 1 :(得分:0)
您不必编写XPath,而是可以使用Watir API。
可以通过数据绑定属性找到三个选择列表:
browser.select_list(data_bind: /dates/)
browser.select_list(data_bind: /months/)
browser.select_list(data_bind: /years/)
或者,如果您需要将选择列表的位置限制为特定元素:
browser.element(id: 'hbf-ebs-personalDetails').select_list(data_bind: /dates/)
browser.element(id: 'hbf-ebs-personalDetails').select_list(data_bind: /months/)
browser.element(id: 'hbf-ebs-personalDetails').select_list(data_bind: /years/)
最终这与编写自己的XPath相同,因为Watir从上面的行创建了一个XPath。但是,许多人会发现这比编写XPath更容易阅读,更不容易出错。