小编kak*_*ret的帖子

将 Cucumber 4.5.x 升级到 v5.0.0

我正在尝试将 Cucumber 4.5.x 的旧测试框架升级到更新版本。该项目是 Maven、IntelliJ、Java、Selenium 和 Cucumber 项目。

但 Cucumber 似乎要么故意误导我,要么他们的文档对我来说难以理解。

首先,我升级到版本 5.0.0,重新加载 Maven 依赖项并执行 mvn clean install。

我立即发现

import io.cucumber.core.api.Scenario was gone. 
Run Code Online (Sandbox Code Playgroud)

经过一番手动搜索,我发现新的路径似乎是

import io.cucumber.core.gherkin.Scenario;
Run Code Online (Sandbox Code Playgroud)

然后我去了6.0.0版本,这里似乎没有任何场景库。

查看文档,似乎声称 Scenario 位于

io.cucumber.java.Scenario
Run Code Online (Sandbox Code Playgroud)

但这对于 4.5.x 版本来说甚至都不正确,那么我到底如何找到导入的新路径呢?

更新:

在尝试升级之前,我的插件列表中有以下内容:

io.cucumber:cucumber-core:4.5.2
io.cucumber:cucumber-expressions:7.0.2
io.cucumber:cucumber-dependencies:1.1.14
io.cucumber:cucumber-datatable_1.1.14 
io.cucumber:cucumber.gherkin:5.1.0
io.cucumber:cucumber-tag-expressions:1.1.1
Run Code Online (Sandbox Code Playgroud)

在我的 pom.xml 中:

<properties>
    <java.version>11</java.version>
    <project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>
    <selenium.version>4.3.0</selenium.version>
    <cucumber.version>4.5.2</cucumber.version>
    <junit5.version>5.5.1</junit5.version>
</properties>
Run Code Online (Sandbox Code Playgroud)

更改 pom.xml 中的版本号并重新加载是正确的方法吗?或者我应该用项目插件列表中的较新版本替换该插件(在 IntelliJ 中)?

我应该升级任何其他 cucumber-x 插件吗?

替代方案 1:

我在 pom.xml 文件中将版本更改为 5.0.0。

  • 其他黄瓜插件的插件版本会自动更新。

构建项目:确定运行 mvn clean install -> 出现以下错误:

cannot find symbol
[ERROR]   symbol:   class Scenario …
Run Code Online (Sandbox Code Playgroud)

cucumber maven cucumber-jvm selenium-webdriver cucumber-java

1
推荐指数
1
解决办法
722
查看次数

查找特定类型的多个元素

鉴于这样的事情:

<table>
 <tr id="row">
  <td>......</td>
  <td>......</td>
  <td>......</td>
 </tr>
 <tr id="row">
  ...
Run Code Online (Sandbox Code Playgroud)

tds 没有 id 或其他标识符。

例如,我怎样才能找到第三个?

我可以找到<td>这样的任何标签:

cy.get("td")
Run Code Online (Sandbox Code Playgroud)

我似乎能够得到这样的特定行:

cy.get("#row")[0]
Run Code Online (Sandbox Code Playgroud)

但这不起作用:

cy.get("#row")[0].cy.get("td")
Run Code Online (Sandbox Code Playgroud)

我想要做的是能够获取例如<td>每行第三个的内容。

html-table cypress

0
推荐指数
1
解决办法
68
查看次数

Cypress - 验证列表(列)的字母顺序排序

我有一个包含这样的列的表(简化):

\n
| ... | ... | Venter p\xc3\xa5 s\xc3\xb8ker | ... |\n| ... | ... | Ikke p\xc3\xa5begynt   | ... |\n
Run Code Online (Sandbox Code Playgroud)\n

该表有 21 行。

\n

相关列可以按字母顺序、降序或升序排序。

\n

我想做的是让 Cypress 验证排序、升序和降序。

\n

到目前为止我所得到的:

\n
cy.get([data-e2e-selector=tabell]).get('[data-e2e-selector=kolonne]')\n  .then(items => {\n    const unsortedItems = items.map((index, html) => Cypress.$(html).text()).get();\n    const sortedItems = unsortedItems.slice().sort()\n    expect(unsortedItems, 'Items are sorted').to.deep.equal(sortedItems);\n  });\n
Run Code Online (Sandbox Code Playgroud)\n

我想做的是从列中获取所有项目并将它们存储在列表中。然后创建一个包含相同项目但已排序的列表。然后比较两者。我已经成功地对日期戳(数字)做了类似的事情,但按字母顺序排序似乎让我困惑。

\n

上面的代码会导致此错误(升序或降序相同):

\n
assert expected Items are sorted: to deeply equal [ Array(21) ]\n
Run Code Online (Sandbox Code Playgroud)\n

为了验证我是否确实将元素放入列表中 - 如果我比较 unsortedItems[] 和sortedItems[] 列表的第一个或最后一个项目,它们是相同的:

\n
expect(unsortedItems, …
Run Code Online (Sandbox Code Playgroud)

sorting alphabetical cypress

-1
推荐指数
1
解决办法
65
查看次数