typescript - Playwright:ΤύποςΣφάλματος: Δεν είναι δυνατή η ανάγνωση ιδιοτήτων του undefined (ανάγνωση 'page')
δραματουργός: Έλαβα το σφάλμα δεν είναι δυνατή η ανάγνωση ιδιοτήτων του undefined (ανάγνωση 'page') σε αυτή τη γραμμή κώδικα: this.page.locator(selector.select_DesignTypeSeries,) όταν προσπάθησα να δημιουργήσω δυναμική συνάρτηση
Μείναμε κολλημένοι σε αυτό για μερικές μέρες γιατί πάντα απέτυχε όταν το doSelectOption στέλνει δυναμική συνάρτηση για σταθερό στοιχείο. Αν στείλω έναν στατικό εντοπιστή για το στοιχείο, τότε ο κώδικας θα τρέξει.
στο αρχείο test.spec.ts:
test('1-Phase-Check validation rule: Size', async ({page}) => {
const onePhaseAction = new OnePhaseAction(page)
await onePhaseAction.doSelectOption(
onePhaseAction.getDesignTypeSeries,
eng.TYPE_SERIES.PED,
)
})
αρχείο one-phase-action.ts:
export class OnePhaseAction{
public page: Page
constructor(page: Page) {
this.page = page
}
async doSelectOption(getElement: () => Locator, type: string | number) {
const element = getElement()
await element.click()
const dropdownOpenLocator = element.locator(selector.dropdown_open)
const filteredElements = dropdownOpenLocator
.filter({hasNot: this.page.locator('[aria-disabled]')})
.getByText(type.toString())
.first()
await filteredElements.click()
}
getDesignTypeSeries() {
return this.page.locator(selector.select_DesignTypeSeries,)
}
}
αν αντικαταστήσω το getElement() με this.page.locator(selectElemt) τότε δουλεύει
Απάντηση #1
Δοκιμάστε να προσθέσετε αυτό στον κατασκευαστή:
this.getDesignTypeSeries = this.getDesignTypeSeries.bind(this);
