无法使用 Watir 单击相同的元素 Class
Can Not Click The Same Element Class Using Watir
我有以下屏幕:
我使用以下 Ruby 脚本来单击 "Add New" 按钮:
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
但是,当我移动到另一个选项卡并尝试单击同一个 "Add New" 按钮时,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
感谢您的帮助。非常感谢。
我猜所有这些选项卡都是同一个网页的一部分?即,全部相同 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
看了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
谢谢。
我有以下屏幕:
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
但是,当我移动到另一个选项卡并尝试单击同一个 "Add New" 按钮时,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
感谢您的帮助。非常感谢。
我猜所有这些选项卡都是同一个网页的一部分?即,全部相同 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
看了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
谢谢。