Найдите и щелкните элемент внутри элемента скрипта - PullRequest
1 голос
/ 20 июня 2019

Я пытаюсь изменить местоположение магазина на сайте с питоном и селеном. Аддон Selenium IDE от Firefox дает мне последовательность. Последовательность работает в IDE Селена из Firefox, но я не могу заставить его работать из Python (Spyder). Элемент, который я хочу щелкнуть, находится внутри скрипта, и никакой инструмент не может найти элемент внутри скрипта. Beautifulsoup не может это сделать, как и селен. С помощью следующего кода я пытаюсь получить цену товара в каждом магазине, поэтому мне нужно изменить магазин (это желтая кнопка в верхнем левом углу, а затем выпадающий список) на каждый магазин из выпадающего списка и удалить исходный код страницы. по цене товара. Но всякий раз, когда я пытаюсь "driver.find_element_by_", я получаю "Невозможно найти элемент:"

Последовательность кликов записывается с помощью дополнения Selenium IDE от Firefox. Или, может быть, есть более быстрый способ, чем селен, чтобы переключаться между магазинами и получать цену продукта. Я не мог сделать это только с Beautifulsoup.

from selenium import webdriver
driver = webdriver.Firefox(executable_path='d:\Work\geckodriver.exe')
url = 'https://www.castorama.pl/deska-14x90x540-eslov-jodel-1-94-id-1105153.html'
driver.get(url)
driver.maximize_window()
driver.find_element_by_id("market-name").click() #Unable to locate element
driver.find_element_by_id("shop-selection-master-infostore").click()
driver.find_element_by_xpath("//div[@id='geolocation_popup_select_market_chosen']/a/span").click()
driver.find_element_by_xpath("//div[@id='geolocation_popup_select_market_chosen']/div/ul/li[2]").click()

1 Ответ

0 голосов
/ 20 июня 2019

Отключить панель cookie:

from selenium import webdriver

driver = webdriver.Firefox(executable_path='d:\Work\geckodriver.exe')
url = 'https://www.castorama.pl/deska-14x90x540-eslov-jodel-1-94-id-1105153.html'
driver.get(url)
driver.maximize_window()
driver.find_element_by_css_selector('[onclick="bold.cookie.closeCookie();"]').click()
driver.find_element_by_id('shop-selection-master').click()

Пуристам это не понравится, но вы также можете использовать javascript

driver.execute_script("document.querySelector('#shop-selection-master').click();")

Выбор параметров подробно описан здесь: Selenium - Python - значение параметра раскрывающегося меню

У вас есть идентификатор родителя select: geolocation-popup-select-market.

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