typescript - Hvordan validere rullegardinverdi i playwright


Jeg prøver å validere verdien jeg valgte i rullegardinmenyen. Jeg bruker dette for Playwright-verktøyet. Jeg skrev en kode for den valideringen, men jeg fikk en feil. Vet noen hvordan man fikser denne feilen og hvordan man skriver dette i TypeScript ved å bruke dette $eval. Takk.

test('testing Drop Down',async ({page}) => {
    await page.goto('https://the-internet.herokuapp.com/dropdown');
    await page.selectOption('#dropdown','1');
    const selectvalue = await page.$eval('#dropdown',(element)=>element.value);
   expect (selectvalue).toContain('1');


Error: expect(received).toContain(expected) // indexOf

Expected substring: "1"
Received string:    "select"

  22 |    // const alloption=await option1.$$('option');
  23 |    await page.locator('select').selectOption('1');
> 24 |    await expect('select').toContain('1')
     |                           ^
  25 |
  26 | 

Svar #1

Jeg hadde lignende problemer på den siden, noen ganger går det raskere og velger 'select' som standard, selv koden etterpå endrer dd til noen andre verdier. Så du kan bruke hard venting.

page.waitforTimeout(100)

eller dette:

selectedDDtext = page.locator('#dropdown [selected="selected"]');
texttoVerify = selectedDDtext.innerText();

Eller for verdi:

   await this.page.$eval<string, HTMLSelectElement>('select[id="dropdown"]',(ele) => ele.value);

Svar #2

Kan bruke evaluate https://playwright.dev/docs/next/api/class-worker#worker-evaluate

locator.evaluate("el => el.options[el.selectedIndex].value")

Relaterte artikler