Селен - Элемент не найден - проблема iframe - PullRequest
0 голосов
/ 07 мая 2019

Запуск сценария селена для проведения некоторого автоматизированного тестирования на servicenow Ошибка получения элемента не найдена при попытке заполнить поле на веб-странице.На странице входа есть фрейм.Но после входа на следующей странице я не думаю, что есть iframe.Также попробовал driver.switch_to.default_content (), но это, похоже, не помогло.Я знаю, что элемент есть и имеет этот идентификатор, потому что я посмотрел на HTML.Также попытался заполнить пару других полей, но имел ту же проблему.Какие-либо предложения?Благодарю.

Первоначально URL-адрес, на который он пытается перейти, - https://dev85222.service -now.com / инцидент.do , но перед этим браузер переходит на страницу входа, которая https://dev85222.service -now.com / navpage.do , после входа в систему вы будете перенаправлены на инцидент.Как только скрипт получает второй URL, он выдает ошибку -Элемент не найден Я думаю, что это может быть связано с переключением iframes

Код -

from selenium import webdriver
import time
import unittest
from selenium.webdriver.common.keys import Keys
from selenium.webdriver.support import expected_conditions as EC
from selenium.webdriver.common.by import By
from selenium.webdriver.support.ui import WebDriverWait
from selenium.webdriver.support.ui import Select
from datetime import date
from selenium.webdriver.common.action_chains import ActionChains


class IncidentCreate(unittest.TestCase):
    def setUp(self):
        self.driver = webdriver.Firefox()

    def test_selenium(self):    
        #
        identifier = "AUTOMATED TESTING"
        module = "INCIDENT"
        action = "CREATE"
        job_name = ""
        today = str(date.today())

        driver = self.driver

        base_url =  "https://dev85222.service-now.com/incident.do"

        driver.get(base_url)
        driver.implicitly_wait(5)

        driver.switch_to.frame("gsft_main")
        username = driver.find_element_by_id("user_name")
        username.send_keys("admin")

        password = driver.find_element_by_id("user_password")
        password.send_keys("Liverpool28")
        password.send_keys(Keys.RETURN)

        identifier_inc = ("AUTOMATED TESTING - INCIDENT - %s" %today)

        driver.switch_to.default_content()

        time.sleep (10)

        try:
            element = WebDriverWait(driver, 10).until(
            EC.presence_of_element_located((By.ID, "incident.category"))

                )
        except:
            print("Element not found")

Ошибка - Элемент не найденE ============================================================================ ОШИБКА: test_selenium ( main .IncidentCreate) ---------------------------------------------------------------------- Трассировка (последний вызов был последним): Файл "C: /Users/user/Documents/Automation/FFOX_CLOUD_INC_CREATEv1.py", строка 66, в категории test_selenium = driver.find_element_by_id ("инцидент. Категория") Файл "C: \ Users \ user \ AppData \ Local \ Programs \ Python \ Python36 \ lib \ site-packages \ selenium \ webdriver \ remote \ webdriver.py ", строка 359, в find_element_by_id вернуть self.find_element (by = By.ID,value = id_) Файл "C: \ Users \ user \ AppData \ Local \ Programs \ Python \ Python36 \ lib \ site-packages \ selenium \ webdriver \ remote \ webdriver.py", строка 966, в find_element 'значение': значение}) ['value'] Файл "C: \ Users \ user \ AppData \ Local \ Programs \Python \ Python36 \ lib \ site-packages \ selenium \ webdriver \ remote \ webdriver.py ", строка 320, в файле execute self.error_handler.check_response (response) Файл" C: \ Users \ user \ AppData \ Local \ Programs \ Python "\ Python36 \ lib \ site-packages \ selenium \ webdriver \ remote \ errorhandler.py ", строка 242, в check_response поднять exception_class (message, screen, stacktrace) selenium.common.exceptions.NoSuchElementException: Сообщение: невозможно найти элемент: [id = "инцидент. категория"]

        ----------------------------------------------------------------------
        Ran 1 test in 41.024s

1 Ответ

0 голосов
/ 07 мая 2019

переключено на содержимое по умолчанию, сразу после нажатия Enter, чтобы войти с первой страницы. Это решило проблему - driver.switch_to.default_content ()

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