ruby - 使用 watir-webdriver- 一个一个地选择选项

标签 ruby watir

b.select_list(:id, "MainContent_drpVehicleType").when_present.options.each do |option|
    option.select

    b.select_list(:id, "MainContent_drpMake").when_present.options.each do |option|
        option.select

        b.select_list(:id, "MainContent_drpModel").when_present.options.each do |option|
            option.select

            b.button(:id,"MainContent_imgbtnsearch").click
        end
    end
end

我有三个下拉菜单 每个下拉菜单都取决于以前的值 我必须一个一个地选择每个选项然后单击 Button 。 *当这样做时出现以下错误* 元素不再附加到 DOM(Selenium::WebDriver::Error::StaleElementReferenceError)

也尝试过:

 b.driver.manage.timeouts.implicit_wait = 3

最佳答案

假设每个选项都是唯一的,您可以尝试:

  1. 获取依赖列表中的最后一个选项
  2. 在当前列表中进行选择
  3. 等待第 1 步中的选项不再出现

下面实现了这个想法(虽然它还没有被测试,因为我没有类似的页面来测试):

b.select_list(:id, "MainContent_drpVehicleType").when_present.options.each do |option|

    #Select a vehicle type and wait for the last make option to no longer appear
    last_make_option = b.select_list(:id, "MainContent_drpMake").when_present.options.last
    option.select
    last_make_option.wait_while_present

    b.select_list(:id, "MainContent_drpMake").when_present.options.each do |option|

        #Select a make and wait for the last model option to no longer appear
        last_model_option = b.select_list(:id, "MainContent_drpModel").when_present.options.last
        option.select
        last_model_option.wait_while_present

        b.select_list(:id, "MainContent_drpModel").when_present.options.each do |option|
            option.select

            b.button(:id,"MainContent_imgbtnsearch").click
        end
    end
end

注意:

  • 代码假定从属列表的最后一个选项将始终更改。如果不是这样,您可能需要检查依赖列表的所有选项。

关于ruby - 使用 watir-webdriver- 一个一个地选择选项,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/15742278/

相关文章:

类似页面部分的 Ruby PageObject 设计

internet-explorer - 在 Watir 中,如何访问 <dd> 内的文本?

ruby - 用于自动化 Windows 窗体应用程序和 Web 应用程序的 GUI 测试的免费工具

ruby-on-rails - 如何将 Twitter 配置移出 Controller ? ( rails )

ruby - 如何检查模块

ruby - 为什么 `class << self` 比 `class << Foo` 更常见用于打开类对象的特征类?

ruby - 使用 RabbitMQ 的 ruby​​ AMQP 中的高优先级队列高于低优先级队列?

ruby-on-rails - Watir-Webdriver - 协议(protocol)不支持的地址族 - socket(2)

ruby - 使用 oAuth token 进行 API 调用

运行 irb watir 命令列表的 Ruby 脚本