【问题标题】:Can Not Click The Same Element Class Using Watir无法使用 Watir 单击相同的元素类
【发布时间】:2018-03-22 14:55:51
【问题描述】:

我有以下屏幕: 我使用以下 Ruby 脚本单击“添加新”按钮:

vendorTab = driver.a id: "tab-master-tab-vendor"
  vendorTab.wait_until_present
  if vendorTab.exists?
    vendorTab.click
  end

  addNewButton = driver.button class: ['btn btn-primary']
  addNewButton.wait_until_present
  if addNewButton.exists?
      addNewButton.click
  end

但是,当我移动到另一个选项卡并尝试单击相同的“添加新”按钮时,Ruby 脚本不起作用。 我的 Ruby 代码有什么问题吗?

buildingTypeTab = driver.a id: "tab-master-tab-building"
buildingTypeTab.wait_until_present
if buildingTypeTab.exists?
  buildingTypeTab.click
end

  addNewButton = driver.button class: ['btn btn-primary']
  addNewButton.wait_until_present
  if addNewButton.exists?
      addNewButton.click
  end

感谢您的帮助。非常感谢。

【问题讨论】:

    标签: ruby selenium automation cucumber watir


    【解决方案1】:

    看了pjd的建议后, 我稍微修改了一下,让它像这样工作:

    buildingTypeTab = driver.a id: "tab-master-tab-building"
    buildingTypeTab.wait_until_present
    if buildingTypeTab.exists?
      buildingTypeTab.click
    end
    
      addNewButton = driver.button(:class => ['btn btn-primary'], :index => 2)
      addNewButton.wait_until_present
      if addNewButton.exists?
          addNewButton.click
      end
    

    正如 pjd 所说,是的,所有这些选项卡都是同一个 HTML 的一部分

    谢谢。

    【讨论】:

    • 如果有人回答了您的问题,请接受他们的回答,他们将获得 15 分,您需要点击他们回答左上角的勾号。
    【解决方案2】:

    我猜所有这些标签都是同一个网页的一部分?即,都在同一个 HTML 中?

    如果是这种情况,driver.button class: ['btn btn-primary'] 会在它在 HTML 中找到第一个实例时停止,但这不是您每次都在寻找的按钮(它是第一个选项卡中的按钮,您的脚本按预期工作)。

    我认为最好的选择是

    • 找到一种方法来唯一标识每个选项卡中的按钮(例如,尽可能使用id 而不是class),或者
    • 在确定哪个索引与每个选项卡对齐后,将所有按钮拉入一个集合并使用其集合索引单击该按钮。例如,

    button_collection = browser.buttons(:class, ['btn', 'btn-primary']) button_collection[2].click # Will click the 3rd button in the collection

    【讨论】:

      猜你喜欢
      • 2015-06-08
      • 1970-01-01
      • 1970-01-01
      • 2012-09-01
      • 2018-05-21
      • 1970-01-01
      • 2013-10-30
      • 2018-08-15
      • 2018-10-20
      相关资源
      最近更新 更多