我有一个XPATH库,用于XPATH定期更改的站点。我编写它是因为我不是通过每个功能文件并更改它发送的XPATH,而是可以简单地更改我的.rb库中变量的值。
是否可以通过.feature文件将这些常量传递给步骤定义?
示例.feature功能文件:
Scenario: I want to test a button
When I go to url "blah"
And I click on the XPATH: XPATH_CONSTANT_VARIABLE
示例.rb步骤定义:
When /^I click on the XPATH: {I DON'T KNOW WHAT TO PUT HERE}$/ do |path|
@driver.find_element(:xpath, path).click
end
示例XPATH .rb库:
XPATH_CONSTANT_VARIABLE = "//*[@id="blahblah"]/div[1]/div/div[2]/div/div[1]/div/div[5]/div/div/div/div[2]"
答案 0 :(得分:3)
您的方案非常紧迫。我建议你让它们更具说明性,不要在场景中使用(或引用)XPathes。读:
如果您确实希望保留原有场景,可以使用:
When /^I click on the XPATH: \w+$/ do |constant|
xpath = Kernel.const_get constant
@driver.find_element(:xpath, xpath).click
end
但是把所有常量放到全球空间就像你一样对我来说似乎很难看。将它们放到YAML文件中可能会更好。