Selenium js webdriver не может выйти из фрейма - PullRequest
0 голосов
/ 27 октября 2019

Я перепробовал почти все советы из SO о моей проблеме, и ничего не работает ... Я смотрел некоторые сообщения на YouTube, но не могу найти ответ ... нигде ...

Этомой код, это простоШаги: 1) Войдите на страницу 2) Войдите на страницу только с одним iFrame 3) Введите некоторый текст в некоторые входы 4) Введите iFrame, введите некоторый текст и вернитесь в документ 5) Нажмите кнопку отправки, чтобы отправить форму.

При попытке нажать кнопку отправки, это говорит о том, что кнопка отправки не видна.

Вот мой код и журнал ошибок ниже:

const url = 'home_page_url';
const addUrl = 'url_with_one_iframe_accesible_after_login';
const webdriver = require('selenium-webdriver');
let driver = new webdriver.Builder().forBrowser('chrome').build();
driver.manage().window().maximize();
driver.get(url);

const loginLink = driver.wait(webdriver.until.elementLocated({ xpath:'//*[@id="login-box"]/div/a' }));

loginLink.click().then(function () {
  driver.wait(webdriver.until.elementLocated({ xpath: '//*[@id="edit-login-id"]'})).sendKeys('login@login.com');
  driver.wait(webdriver.until.elementLocated({ xpath: '//*[@id="edit-login-password"]' })).sendKeys('pass');
  loginButton = driver.wait(webdriver.until.elementLocated( { xpath: '//*[@id="edit-submit--7"]'} )).click(); // login to CGO main page
}).then(function () {
  driver.wait(webdriver.until.elementLocated({ xpath: '//*[@id="admin-menu-account"]/li[1]' })).then(function () {
    driver.get(addUrl);
    driver.wait(webdriver.until.titleIs('Create Noticia | CitizenGO'));

    driver.wait(webdriver.until.elementLocated({ xpath: '//*[@id="edit-title"]' })).sendKeys('new selenium notica title xpath');
    driver.wait(webdriver.until.elementLocated({ xpath: '//*[@id="edit-field-topic-und"]/option[7]' })).click();

    driver.switchTo().frame(driver.findElement({ xpath: '//*[@id="edit-body-und-0-value_ifr"]' })); // enter frame by ID
    driver.wait(webdriver.until.elementLocated({ xpath: '//*[@id="tinymce"]'} )).sendKeys('just selenium-created notica xpath');
    driver.switchTo().defaultContent();
  }).then(function () {
    driver.findElement(webdriver.By.id('edit-submit')).click();
  });

});

И журнал консоли...

(node:12724) UnhandledPromiseRejectionWarning: StaleElementReferenceError: stale element reference: element is not attached to the page document
  (Session info: chrome=77.0.3865.120)
    at Object.throwDecodedError (C:\projekty\selenium-sandbox\node_modules\selenium-webdriver\lib\error.js:550:15)
    at parseHttpResponse (C:\projekty\selenium-sandbox\node_modules\selenium-webdriver\lib\http.js:563:13)
    at Executor.execute (C:\projekty\selenium-sandbox\node_modules\selenium-webdriver\lib\http.js:489:26)
    at processTicksAndRejections (internal/process/task_queues.js:93:5)
    at async thenableWebDriverProxy.execute (C:\projekty\selenium-sandbox\node_modules\selenium-webdriver\lib\webdriver.js:699:17)
(node:12724) UnhandledPromiseRejectionWarning: Unhandled promise rejection. This error originated either by throwing inside of an async function without a catch block, or by rejecting a promise which was not handled with .catch(). (rejection id: 1)
(node:12724) [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.

Я пробовал с xpaths и без, и во многих других случаях ... Это первый раз, когда я так расстроен! Большое спасибо за вашу помощь.

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