codeceptjs / codeceptjs/CodeceptJS

Using `I.see` inside of a `within` call

Đang mở
#1,856 0 bình luận 0 reaction 0 người được giao Xem trên GitHub
Ngôn ngữ chính
JavaScript
Star
4.2k
Fork
757
Merge trung bình
2 ngày 9 giờ
Pull request đã merge (30 ngày)
16

Mô tả

#### What are you trying to achieve?

I would like to use `I.see` inside of a `within` call, using webdriverio

#### What do you get instead?

I get the following error: `Element ".//*" was not found by text|CSS|XPath`.

It would appear that the scope of the `within`-constrained element is not being considered. Digging into the code a bit, this function appears to govern the context used to validate against: https://github.com/Codeception/CodeceptJS/blob/master/lib/helper/WebDriverIO.js#L1843-L1871

Is this intended behavior or a bug?

> Provide console output if related. Use `--verbose` mode for more details.

```bash

> codeceptjs run --steps

CodeceptJS v2.3.0
Using test root "/"

Person Page --
Test that all the expected attributes appear on the page | {}
I am on page ""
I see element "div.personHeroRight"
I see element "div.personHeroRight > h1.name"
Within "div.personHeroRight > h1.name"
I see "Francis"
✖ FAILED in 2514ms

-- FAILURES:

1) Person Page
Test that all the expected attributes appear on the page | {}:
Element ".//*" was not found by text|CSS|XPath

Scenario Steps:

- I.see("Francis") at tests/person-page/testAttributes.js:16:9
- I.seeElement("div.personHeroRight > h1.name") at Test. (tests/person-page/testAttributes.js:14:7)
- I.seeElement("div.personHeroRight") at Test. (tests/person-page/testAttributes.js:13:7)
- I.amOnPage("...") at Test. (tests/person-page/testAttributes.js:12:7)



Run with --verbose flag to see NodeJS stacktrace

FAIL | 0 passed, 1 failed // 5s
2019-08-20T20:24:57.270Z INFO @wdio/selenium-standalone-service: shutting down all browsers
npm ERR! Test failed. See above for more details.
make: *** [test] Error 1

```

> Provide test source code if related

```js

********** TEST CODE **********

Feature('Person Page');

const personPage = require('../../pages/personPage.js');

Data(personPage.people).Scenario(
'Test that all the expected attributes appear on the page',
(I, current) => {
I.amOnPage(current.url);
I.seeElement(personPage.attributesModule);
I.seeElement(personPage.Name);
within(personPage.Name, () => {
I.see(current.firstName);
I.see(current.middleInitial, personPage.Name);
I.see(current.lastName, personPage.Name);
});
I.seeElement(personPage.Dates);
I.see(current.dob, personPage.Dates);
I.see(current.dod, personPage.Dates);
},
);

********** PAGE OBJECT **********

const {I} = inject();

let people = new DataTable([
'firstName',
'middleInitial',
'lastName',
'url',
'dob',
'dod',
'location',
]);

people.add([
'Francis',
'',
'',
'',
'',
'',
'',
]);

module.exports = {
attributesModule: 'div.personHeroRight',
Name: 'div.personHeroRight h1.name',
Dates: 'div.personHeroRight p.date',
people: people,
};

```

### Details

* CodeceptJS version: 2.3.0
* NodeJS Version: 12.4.0
* Operating System: macOS Mojave (10.14.6 (18G87)
* WebDriverIO version (if related): 5.12.1
* Configuration file:

```js
exports.config = {
tests: './tests/*/*.js',
output: './output',
helpers: {
WebDriver: {
url: 'https://www..com',
browser: 'chrome'
}
},
plugins: {
wdio: {
enabled: true,
services: ['selenium-standalone']
}
},
include: {
I: './custom_steps/*.js',
personPage: './pages/personPage.js'
},
bootstrap: null,
mocha: {},
name: 'codeceptjs_tests'
}
```

Hướng dẫn đóng góp

Mở hướng dẫn đóng góp

Đánh giá

Issue này chưa được đánh giá.

Nhận issue mới trong hộp thư của bạn

Bản tóm tắt ngắn những issue GitHub phù hợp với người mới.