1

I use the page object pattern and it's often the case, that I like to address an element inside another selector. So I would just like to reuse an already defined CSS-selector. My current workaround is just to define a plain string.

Is it possible to do something like:

const list = (listName) => Selector('#list' + listName)
const item = (itemName) => Selector(list, '#item-' + itemName)

It would be even enough to get the CSS-Selector text of the Selector like:

const list = (listName) => Selector('#list' + listName)
const item = (itemName) => Selector(`${list.selectorText} #item-${itemName}`)

Or that the find-method supports a Selector:

const list = (listName) => Selector('#list' + listName)
const item = (itemName) => list.find(Selector('#item-' + itemName))
Daniel Eisenreich
  • 1,353
  • 3
  • 16
  • 32

1 Answers1

1

Yes, you surely may combine selector strings, since it is a general css selector string.

Note: testscafe testing api actions such as Click (https://devexpress.github.io/testcafe/documentation/test-api/actions/click.html) accept strings as arguments. If you don't need to use the Selector class methods such as withText, nth etc., you can write a test as follows:

const listSelector  = (listName) => `#list${listName}`;

//somewhere in test:
  await t.click(listSelector('My List Name');
Shurygin.Sergey
  • 431
  • 2
  • 3