【问题标题】:Java location path regex splitJava位置路径正则表达式拆分
【发布时间】:2023-02-08 19:11:13
【问题描述】:

我已经“继承”了现有的 Java Selenium 和 Cucumber 框架,该框架主要是为操作系统使用而编写的。我正在使用 Windows,我正在尝试修复并在 Windows 上运行它。

我的第一个问题是指定当前文件路径,这是为操作系统编写的:

private String getProjectName(Scenario scenario) {
    return Arrays.asList(scenario.getUri().getPath().replace(System.getProperty("user.dir"), "").split("/")).get(5);
}

我收到的错误是:java.lang.ArrayIndexOutOfBoundsException:索引 5 超出长度 1 的范围

至于 Windows,我们正在使用反斜杠 我尝试将“/”切换为“”但是出现错误(+ 在我调查之后)我尝试使用“\\\\”但实际上错误与上面相同。

我知道只提供我的部分代码,这可能很难,但乍一看你能告诉我:

  • 该方法是否可以在 Windows 上运行,或者是否应该完全重构?
  • System.getProperty("user.dir") 是正确的解决方案吗?
  • 如何正确传递反斜杠?
  • 为什么他们要.get(5)

【问题讨论】:

  • “他们为什么要使用 get(5)” -> 你将不得不向原作者询问这个问题。他们可能假设场景存储在您系统上的特定目录中

标签: java windows selenium cucumber


【解决方案1】:

我能猜到:

此方法采用的项目名称很可能是场景文件所在的 fodler 结构中某个文件夹的名称。

这就是为什么他们采用了5th 元素。因为在5th 层有代表项目的文件夹。

使用的方法看起来很有争议。至少因为有一些多余的步骤,比如转换为数组。

现在。你会怎么走:

正确的方法是使用java.nio.file.Path(从 Java 7 开始)来处理不同操作系统特定的事情。

所以你的代码可能看起来像:

private String getProjectName(Scenario scenario) {
  return Path.of(scenario.getUri()).getName(5)
}

附言- 当然,您必须更改5 才能在您的结构中找到所需文件夹的正确位置。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2021-12-04
    • 1970-01-01
    • 1970-01-01
    • 2014-05-09
    • 1970-01-01
    • 2010-11-03
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多