我只是学习如何使用黄瓜。 你能告诉我如何填写这段代码吗?
您可以使用以下代码段实现未定义步骤的步骤定义:
Then /^I take a screenshot$/ do
pending # express the regexp above with the code you wish you had
end
答案 0 :(得分:5)
通常会在出现意外情况时拍摄屏幕截图。您可能还想捕获屏幕截图,以便在测试用例失败时进行报告。在这种特殊情况下,您应该在@After方法中使用截屏捕获逻辑,该方法将针对每个方案执行。 Java,selenium版本,
@After("@browser")
public void tearDown(Scenario scenario) {
if (scenario.isFailed()) {
final byte[] screenshot = ((TakesScreenshot) driver)
.getScreenshotAs(OutputType.BYTES);
scenario.embed(screenshot, "image/png"); //stick it in the report
}
driver.close();
}
答案 1 :(得分:4)
您可以使用固定步骤(预定义)来截取屏幕截图。
<a id="connectLink" href="#">Connect To Trello</a>
不需要任何步骤定义。黄瓜还带有许多其他预定步骤。请参阅其他canned steps
如果您仍需要编写步骤定义。
$ip = `ifconfig en1 inet | grep inet | awk '{print $2}'`
答案 2 :(得分:2)
我提供的代码将在场景失败时拍摄快照,我希望您可以根据您的用途进行修改,如果您不能这样做,请在此处评论。这段代码与Ubuntu系统一起使用了
#Create a directory for storing snapshot
dir_path = "/home/vchouhan/vijay_work/snapshot"
unless Dir.exist?(dir_path)
Dir.mkdir(dir_path,0777)
puts "=========Directory is created at #{dir_path}"
else
puts "=========Directory is exist at #{dir_path}"
end
#Run after each scenario
After do |scenario|
#Check, scenario is failed?
if(scenario.failed?)
time = Time.now.strftime('%Y_%m_%d_%Y_%H_%M_%S_')
name_of_scenario = time + scenario.name.gsub(/\s+/, "_").gsub("/","_")
puts "Name of snapshot is #{name_of_scenario}"
file_path = File.expand_path(dir_path)+'/'+name_of_scenario +'.png'
page.driver.browser.save_screenshot file_path
puts "Snapshot is taken"
puts "#===========================================================#"
puts "Scenario:: #{scenario.name}"
puts "#===========================================================#"
end
end
答案 3 :(得分:0)
在Java中,您可以像这样实现此步骤,
@Then("^I take a screenshot$")
public void i_take_a_screenshot()
{
// Your code goes here
}
答案 4 :(得分:0)
如果您使用watir-webdriver进行测试,可以在浏览器对象上调用屏幕截图方法并保存。 http://watirwebdriver.com/screenshots/
如果您正在使用Windows控件,您可以使用win32 / screenshot gem来实现此目的。https://github.com/jarmo/win32screenshot
答案 5 :(得分:0)
上一个答案的改进版本。这有错误处理,在失败点写出URL。认为它可能有用。
@After("@UI" )
public void embedScreenshotOnFail(Scenario s) {
if (s.isFailed()) {
try {
byte[] screenshot = ((TakesScreenshot) getDefaultDriver()).getScreenshotAs(OutputType.BYTES);
s.embed(screenshot, "image/png" );
s.write("URL at failure: " + getDefaultDriver().getCurrentUrl());
} catch (WebDriverException wde) {
s.write("Embed Failed " + wde.getMessage());
} catch (ClassCastException cce) {
cce.printStackTrace();
}
}
}