Я новичок в написании теста на селен, так что терпите меня.Я пытаюсь написать автоматический тест для элемента карусели на нашей домашней странице.Я хочу, чтобы тест щелкнул по одной из кнопок навигации карусели, а затем убедился, что в div карусели был добавлен какой-то встроенный стиль.(Этот стиль приведет к перемещению экрана карусели и отображению другого элемента.) Кнопка навигации - это пользовательский веб-элемент, а не или, или какая-либо другая, очевидно, активируемая вещь.Мой тест не пройден по click (), говоря: «WebDriverError: элемент не взаимодействует».Это потому, что Selenium не распознает мой пользовательский веб-элемент как интерактивную?Или я что-то не так делаю?
Я много гуглил и пробовал много разных синтаксисов, в том числе добавление снов (я знаю, что это большое нет-нет).Я также проверил правильность xpath, потому что когда я изменил xpath на что-то другое, я получил другую ошибку, в которой говорится, что элемент не найден.
HTML:
<u-carousel id="hero-carousel">
<div class="u.container"><!-- this is the element that gets the inline style added to -->
...carousel content here...
</div>
</u-carousel>
<u-carousel-move class="home.hero.others active" u-for="hero-carousel" u-to="2">
<div class="carousel-nav-button">
Nav Item 2
</div>
</u-carousel-move>
<u-carousel-move class="home.hero.others" u-for="hero-carousel" u-to="2">
<div class="carousel-nav-button">
Nav Item 3
</div>
</u-carousel-move>
SeleniumJavascript:
describe('homepage carousel', () => {
test('carousel displays', async () => {
expect(await carouselAppPicker()).toBe(true);
});
});
async carouselAppPicker() {
console.info({action: 'carouselAppPicker', status: 'run'});
let app_picker_xpath = '//u-carousel-move[contains(@class,"home.hero.others")][@u-for="hero-carousel"][@u-to="2"]';
let app_picker = await this.driver.wait(until.elementLocated(By.xpath(app_picker_xpath)), 5000, 'Cannot find app picker element');
await app_picker.click();
let carousel_screen_xpath = '//u-carousel[@id="hero-carousel"]/div[@class="u.container"][@style="transform: translateX(-200%);"]';
await this.driver.wait(until.elementLocated(By.xpath(carousel_screen_xpath)), 5000, 'Cannot find screen element');
return true;
}
Это ошибка, которую я получаю, когда запускаю этот тест из командной строки, используя jest:
homepage carousel › carousel displays
WebDriverError: element not interactable
(Session info: headless chrome=73.0.3683.103)
(Driver info: chromedriver=2.46.628411 (hash),platform=Mac OS X 10.13.6 x86_64)
at Object.checkLegacyResponse (node_modules/selenium-webdriver/lib/error.js:585:15)
at parseHttpResponse (node_modules/selenium-webdriver/lib/http.js:533:13)
at Executor.execute (node_modules/selenium-webdriver/lib/http.js:468:26)