Попытка нажать кнопку с Selenium Webdriver, используя Cucumber- JS - PullRequest
0 голосов
/ 14 марта 2020

Я целый день пытался нажать кнопку в автоматическом тесте, используя разные селекторы (id, class и href), но не смог. С ID проще, но я тренируюсь с youtube, и после первого щелчка (в меню гамбургера) я не могу нажать ни на одной вкладке после этого (История, Подписки, Библиотека и т. Д. c ..)

const { Given, When, Then } = require('cucumber');
const { Builder, By, Key, until } = require('selenium-webdriver');
const { expect, assert } = require('chai');

let driver = new Builder().forBrowser('chrome').build();

Given('Youtube', {timeout: 2 * 5000}, async function () {
  await driver.get('https://www.youtube.com/?gl=ES&hl=es');
});

When('Library', {timeout: 2 * 5000}, async function () {
  await  driver.findElement(By.id("guide-icon")).click();
});

When('Notice', {timeout: 2 * 5000}, async function () {
  await  driver.findElement(By.css("style-scope ytd-guide-entry-renderer")).click();
});

Также пробовал с Xpath (мне нужно найти определенные c части сети, и у меня есть несколько классов с одинаковыми значениями).

When('Notice', {timeout: 2 * 5000}, async function () {
  await  driver.findElement(By.xpath("//a[@href='/feed/history']")).click();
});

Файл функции в порядке.

Я получаю это сообщение каждый раз при запуске теста

 NoSuchElementError: no such element: Unable to locate element: {"method":"css selector","selector":"style-scope ytd-guide-entry-renderer"}
         (Session info: chrome=80.0.3987.132)

Спасибо, ребята;)

1 Ответ

0 голосов
/ 14 марта 2020

извините, я пишу селен, используя javascript

Но я могу рассказать вам о проблеме

Поскольку вы можете войти в определенный уровень после нажатия (iframe ...)

Итак, есть решение

Переключите листья снова на самый внешний слой

driver.SwitchTo().Window(driver.WindowHandles.Last());//javascript

Надеюсь, это поможет вам

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...