select_list xpath for date dropdowns without unique class names or ids
xpath for select_list for date dropdowns without unique class names or ids
如果 select_list 用于出生日期并具有三个下拉列表怎么办:
例如
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
?
谢谢!!
使用 contains
函数你可以做到这一点。
//select[contains(@data-bind,'dates')] #change the data-bind value to month or years or whatever
编辑:OP 添加屏幕截图后的新选择器
您需要做的就是等待元素存在(不可见)并传递所需国家[=15=的选项值 ]
下面的xpath
应该直接找到那个select
标签的选项
//select[contains(@data-bind,'dates')]/option[@value='" + country + "']
不必编写 XPath,您可以使用 Watir API。
三个 select 列表可以通过它们的数据绑定属性找到:
browser.select_list(data_bind: /dates/)
browser.select_list(data_bind: /months/)
browser.select_list(data_bind: /years/)
或者如果您需要将 select 列表的定位限制为特定元素:
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 更容易阅读并且更不容易出错。
如果 select_list 用于出生日期并具有三个下拉列表怎么办:
例如
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
?
谢谢!!
使用 contains
函数你可以做到这一点。
//select[contains(@data-bind,'dates')] #change the data-bind value to month or years or whatever
编辑:OP 添加屏幕截图后的新选择器 您需要做的就是等待元素存在(不可见)并传递所需国家[=15=的选项值 ]
下面的xpath
应该直接找到那个select
标签的选项
//select[contains(@data-bind,'dates')]/option[@value='" + country + "']
不必编写 XPath,您可以使用 Watir API。
三个 select 列表可以通过它们的数据绑定属性找到:
browser.select_list(data_bind: /dates/)
browser.select_list(data_bind: /months/)
browser.select_list(data_bind: /years/)
或者如果您需要将 select 列表的定位限制为特定元素:
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 更容易阅读并且更不容易出错。