我正在尝试将 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
鉴于这样的事情:
<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>每行第三个的内容。
我有一个包含这样的列的表(简化):
\n| ... | ... | Venter p\xc3\xa5 s\xc3\xb8ker | ... |\n| ... | ... | Ikke p\xc3\xa5begynt | ... |\nRun Code Online (Sandbox Code Playgroud)\n该表有 21 行。
\n相关列可以按字母顺序、降序或升序排序。
\n我想做的是让 Cypress 验证排序、升序和降序。
\n到目前为止我所得到的:
\ncy.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 });\nRun Code Online (Sandbox Code Playgroud)\n我想做的是从列中获取所有项目并将它们存储在列表中。然后创建一个包含相同项目但已排序的列表。然后比较两者。我已经成功地对日期戳(数字)做了类似的事情,但按字母顺序排序似乎让我困惑。
\n上面的代码会导致此错误(升序或降序相同):
\nassert expected Items are sorted: to deeply equal [ Array(21) ]\nRun Code Online (Sandbox Code Playgroud)\n为了验证我是否确实将元素放入列表中 - 如果我比较 unsortedItems[] 和sortedItems[] 列表的第一个或最后一个项目,它们是相同的:
\nexpect(unsortedItems, …Run Code Online (Sandbox Code Playgroud)