Добрый день
На сайте 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()