Проблема с использованием локаторов в авто атрибутировании

Добрый день
На сайте https://www.bigstockphoto.com/ с помощью Python Selenium пытаюсь для предварительно загруженных на сайт через ftp изображений задать предварительно известные значения категорий (их всего две -что несущественно, так как главное выбрать только одну).
Зайти на сайт, помянять язык на английский, выбрать нужное изображение и перейти в режим редактирования это я могу, но когда поверх сайта появляеться то что напоминает диалоговое окно и оно в исходном коде отсутствует, а в DOM-е есть, то я не могу использовать локатор так как он не находиться (в среде разработчика Elements>>DOM-е поиск работает и находит по XPATH).

Не знаю в какую сторону разбираться, но есть подозрения на следующее:

  • в доме вижу 2 штуки пары: ;
  • первый div выглядит :
    - и уже переведя названия класса (весь сайт свернут в обтекающий bootstrap )
    подозреваю, что в этом может быть дело, но не уверен так как не нашел нужной информации.

Думаю, что проблема не в :
ожиданиях - так как выставляю достаточно долгие периоды (до 20 секунд)

Подскажите пожалуйста, как переключиться на этот код(окно -возможно это я не коректно называю) и находить нужные мне локаторы (локаторы использую в первую очередь для применения метода
.click() ): //*[@id=‘tabitem_categories’] или /html/body/div[1]/div[7]/form/ul/li[2]/a ?

Log:

Traceback (most recent call last):
File “D:\TestPython\Working\Bigstock\BigstockTest19Category.py”, line 61, in
Category=driver.find_element(By.XPATH, '//[@id=“tabitem_categories”]’)
File “C:\Program Files\Python310\lib\site-packages\selenium\webdriver\remote\webdriver.py”, line 856, in find_element
return self.execute(Command.FIND_ELEMENT, {
File “C:\Program Files\Python310\lib\site-packages\selenium\webdriver\remote\webdriver.py”, line 434, in execute
self.error_handler.check_response(response)
File “C:\Program Files\Python310\lib\site-packages\selenium\webdriver\remote\errorhandler.py”, line 243, in check_response
raise exception_class(message, screen, stacktrace)
selenium.common.exceptions.NoSuchElementException: Message: Unable to locate element: //
[@id=“tabitem_categories”]
Stacktrace:
RemoteError@chrome://remote/content/shared/RemoteError.jsm:12:1
WebDriverError@chrome://remote/content/shared/webdriver/Errors.jsm:192:5
NoSuchElementError@chrome://remote/content/shared/webdriver/Errors.jsm:404:5
element.find/</<@chrome://remote/content/marionette/element.js:291:16

мой исходный код:

#! python3

!!! ПАРОЛИ НЕ РАБОЧИЕ

import time
import requests
from selenium.webdriver.common.action_chains import ActionChains

#import of the object webdriver
from selenium import webdriver
from selenium.webdriver.common.by import By
from selenium.webdriver.common.keys import Keys
from selenium.webdriver.support.ui import WebDriverWait
from selenium.webdriver.support.expected_conditions import presence_of_element_located
from selenium.webdriver.support.ui import Select

driver = webdriver.Firefox()
driver.maximize_window()
driver.implicitly_wait(20)
driver.get(‘Log In or Sign Up | Stock Photos & Vector Art | Bigstock’)
#Check upload url web-site
assert “Bigstock” in driver.title

uname=driver.find_element(By.ID, “uname”)
passwd=driver.find_element(By.ID, “passwd”)
uname.clear()
uname.send_keys(“name@gmail.com” + Keys.RETURN)
passwd.clear()
passwd.send_keys(“password”)+ Keys.RETURN)
##driver.implicitly_wait(20)
time.sleep(20)

Change language on English:

ChangeLanguage1=driver.find_element(By.XPATH, “/html/body/div[1]/div[2]/div/div/div/ul/li[1]/a/span”)
ChangeLanguage1.click()

ChangeLanguage2=driver.find_element(By.XPATH, “/html/body/div[1]/div[2]/div/div/div/ul/li[1]/ul/li[4]/a”)
ChangeLanguage2.click()

clickIm=driver.find_element(By.ID, “460813897”)

Double-click on image:

ActionChains(driver)
.double_click(clickIm)
.perform()

time.sleep(20)

Category=driver.find_element(By.XPATH, “//*[@id=‘tabitem_categories’]”)
Category.click()

######
  • в доме вижу 2 пары: " ";

боди боди

Возможно, эти элементы в другом фрейме (iFrame). Если так, то нужно переключиться на этот фрейм, найти элементы/выполнить действия, а потом вернуться к исходному фрейму.

Если они в другом фрейме то должен быть тег iframe - я правильно понимаю?
Я тега iframe не нашел.

Спасибо. Действительно дело в iframe. Почему только сразу не мог найти его.

1 симпатия