Webdriver - Как прокрутить страницу вниз до элемента внутри iFrame

Я хочу добраться до некоторого элемента (редактора WYIWYG) внутри iFrame.

Я пробовал много альтернатив, но все они не решили мою проблему. : /

Кто-нибудь из вас может помочь? Я думаю, что реализация там немного проблематична и, вероятно, понадобится какой-то хакер или волшебное решение, чтобы решить эту проблему ..

Мой код:

//node packages
const webdriver = require('selenium-webdriver');
const chrome = require('chromedriver');
const chai = require('chai');


//conf
let element_time = 10000;

let driver = new webdriver.Builder()
    .forBrowser('chrome')
    .setChromeOptions(/* ... */)
    .build();

//classes
const actionSequence = webdriver.ActionSequence;
const key = webdriver.Key;
const By = webdriver.By;
const until = webdriver.until;
const expect = chai.expect;


//test cases
describe("Test", async function(){

    this.timeout(30000);

    before(function(){
        driver.manage().window().maximize();
    });


    it("Step 1 - Heading to rm.com", async function(){
        await driver.get('https://www.rt.com'); 
    });

    it("Step 2 - Heading into the main article", async function(){
        try {
            await driver.findElement(By.css('a.main-promobox__link')).click();
        } finally {
            return null;
        }       
    });

    it("Step 4 - Switching to iFrame and publishing the content", async function(){
        try {
            await driver.switchTo().frame(driver.findElement(By.css("div.sppre_frame-container>iframe")));
            let userName = driver.findElement(By.xpath('//*[@id=\"root\"]/div/div[2]/div[2]/div[2]/div[1]/div[1]/input'));
            let txtEditor =  driver.findElement(By.className("ql-editor"));
                await userName.click();
                await userName.sendKeys("Idan");
                await driver.actions(txtEditor).mouseMove().mouseUp().mouseDown().perform();
                await txtEditor.sendKeys('Bla.. Bla.. Bla..' + "\n" + 'Bla.. Bla.. Bla..');
                driver.sleep(2000);

        } finally {
            return null;
        }   
    });


})

Конкретный элемент, к которому я хочу добраться -

Webdriver - Как прокрутить страницу вниз до элемента внутри iFrame

Ошибка:

  Test
    ✓ Step 1 - Heading to rm.com (8159ms)
    ✓ Step 2 - Heading into the main article (10942ms)
(node:43961) UnhandledPromiseRejectionWarning: Unhandled promise rejection (rejection id: 1): NoSuchElementError: no such element: Unable to locate element: {"method":"css selector","selector":".ql-editor"}
  (Session info: chrome=64.0.3282.186)
  (Driver info: chromedriver=2.36.540469 (1881fd7f8641508feb5166b7cae561d87723cfa8),platform=Mac OS X 10.13.3 x86_64)
(node:43961) [DEP0018] DeprecationWarning: Unhandled promise rejections are deprecated. In the future, promise rejections that are not handled will terminate the Node.js process with a non-zero exit code.
    ✓ Step 4 - Switching to iFrame and publishing the content (270ms)

Техническая информация: Node JS | Мокко

Так какая линия не работает и в чем ошибка?

lloyd 16.03.2018 02:57

Нет ошибки .. просто набираю первый ввод и пропускаю тест без какой-либо информации в журнале.

Idan E 16.03.2018 07:43

@lloyd На самом деле теперь он достигает iframe, но не прокручивается до соответствующих элементов внутри iframe и не распознает там текстовый редактор (см. ошибку и обновленный код внутри основного сообщения)

Idan E 16.03.2018 09:24
Поведение ключевого слова "this" в стрелочной функции в сравнении с нормальной функцией
Поведение ключевого слова "this" в стрелочной функции в сравнении с нормальной функцией
В JavaScript одним из самых запутанных понятий является поведение ключевого слова "this" в стрелочной и обычной функциях.
Концепция локализации и ее применение в приложениях React ⚡️
Концепция локализации и ее применение в приложениях React ⚡️
Локализация - это процесс адаптации приложения к различным языкам и культурным требованиям. Это позволяет пользователям получить опыт, соответствующий...
Улучшение производительности загрузки с помощью Google Tag Manager и атрибута Defer
Улучшение производительности загрузки с помощью Google Tag Manager и атрибута Defer
В настоящее время производительность загрузки веб-сайта имеет решающее значение не только для удобства пользователей, но и для ранжирования в...
Безумие обратных вызовов в javascript [JS]
Безумие обратных вызовов в javascript [JS]
Здравствуйте! Юный падаван 🚀. Присоединяйся ко мне, чтобы разобраться в одной из самых запутанных концепций, когда вы начинаете изучать мир...
Система управления парковками с использованием HTML, CSS и JavaScript
Система управления парковками с использованием HTML, CSS и JavaScript
Веб-сайт по управлению парковками был создан с использованием HTML, CSS и JavaScript. Это простой сайт, ничего вычурного. Основная цель -...
JavaScript Вопросы с множественным выбором и ответы
JavaScript Вопросы с множественным выбором и ответы
Если вы ищете платформу, которая предоставляет вам бесплатный тест JavaScript MCQ (Multiple Choice Questions With Answers) для оценки ваших знаний,...
0
3
382
0

Другие вопросы по теме