我们正在尝试使用黄瓜宁静框架进行端到端测试。我是相当新的技术,下面的这段简单代码让我感到厌倦。
actor.attemptsTo(Enter.theValue(path).into(Upload));
其中path是我尝试使用浏览器的上载小部件上载的文件的位置。任何人都曾经设法使用宁静的屏幕播放模式来执行类似的操作。
这确实使我们想到放弃宁静,只使用黄瓜硒框架,因为我可以使用Upload.sendkeys(path)轻松地执行此操作; 任何帮助深表感谢。预先感谢。
应要求提供:列出步骤:
public class ListingSteps
{
@Before
public void set_the_stage() {
OnStage.setTheStage(new OnlineCast());
}
@Given("^(.*) is able to click import products$") public void userIsAbleToClick(String actorName) throws Throwable
{
theActorCalled(actorName).wasAbleTo(Start.theApplication());
}
@When("^s?he imports a single item successfully$") public void heImportsASingleItemSuccessfully() throws Throwable
{
theActorInTheSpotlight().attemptsTo(Import.spreadsheet());
}
@Then("^(.*) are listed on ebay and amazon with all the right information$") public void itemsAreListedOnEbayAndAmazonWithAllTheRightInformation(String actorName, String SKU)
throws Throwable
{ //待处理
}
然后暂时忽略其正在进行的工作。
导入课程:
public class Import implements Task
{
protected String path =
"C:\\somePathToFile\\populated_excel.xlsx";
public static Import spreadsheet()
{
return instrumented(Import.class);
}
@Override public <T extends Actor> void performAs(T actorName)
{
actorName.attemptsTo(Click.on(Products.ProductsScreen));
actorName.attemptsTo(Click.on(Products.Upload));
actorName.attemptsTo(Enter.theValue(path).into(Browse).thenHit(Keys.RETURN));//this is the line which is giving errors
actorName.attemptsTo(Click.on(Products.UploadButton));
}
}
目标浏览
public class Products
{
public static Target Browse = Target.the("browse file").locatedBy("//input[@type='file']");
}
答案 0 :(得分:1)
您尝试删除这些行吗? actorName.attemptsTo(Click.on(Products.ProductsScreen)); actorName.attemptsTo(Click.on(Products.Upload));
您无需打开上传文件组件,只需将文件路径直接写入输入文件元素并执行提交即可。
答案 1 :(得分:0)
我设法完成此工作的方法是使用FileToUpload类:
import net.thucydides.core.pages.components.FileToUpload;
FileToUpload fileToUpload = new FileToUpload(driver, fileName);
fileToUpload.fromLocalMachine().to(webElement);
答案 2 :(得分:0)
我用一个简单的方法完成了这个工作:
import java.nio.file.*;
Path data = null;
try {
data = Paths.get(ClassLoader.getSystemResource(file).toURI());
} catch (URISyntaxException ignore) {}
ACTOR.attemptsTo(Upload.theFile(data).to(target));
file
是存在于您的类路径中的实际文件,如果您有一个 Maven 项目,则位于 src/test/resources
中。
target
类似于:
Target.the("Image upload").located(By.xpath("//input[@type='file']"));