селен в питоне. пытаясь выбрать элемент - PullRequest
0 голосов
/ 06 октября 2019

ОБНОВЛЕНИЕ: я узнал, что вызвало проблему в моем оригинальном сообщении, но не знаю, как решить. Вот еще немного моего кода. Сначала я выполнил поиск, после чего моя страница в Firefox переместилась на www.flickr.com/searc/?text=volleybal. но, видимо, мой объект браузера все еще находится на www.flickr.com. Как я могу обновить его?

from selenium import webdriver
browser = webdriver.Firefox()
browser.get('https://www.flickr.com')
s = browser.find_element_by_id('search-field')
s.send_keys('volleyball')
s.submit()
s = browser.find_element_by_class_name("style-button")
#s = browser.find_element_by_xpath("//li[@data-style-value = 'minimalism']")
s.click()

оригинальное сообщение:

Я экспериментирую с селеном и хочу выбрать следующий элемент:

<li class="style-button minimalist" data-style-value="minimalism" data-tooltip-title="Minimalist" tabindex="0" role="button" aria-label="Minimalist">

Я пробовал следующее, но ни один из них не работает:

s = browser.find_element_by_class_name("style-button minimalist")

s = browser.find_element_by_class_name("style-button.minimalist")

s = browser.find_element_by_css_selector("li.style-button.minimalist")

s = browser.find_element_by_css_selector(".style-button.minimalist")

Как выбрать этот элемент?

Ответы [ 3 ]

0 голосов
/ 06 октября 2019

решаемая. Добавлено browser.refresh() после s.submit()

0 голосов
/ 06 октября 2019

Лучший вариант - использовать absolute xpath . Это для этой кнопки будет:

/html[1]/body[1]/div[1]/div[1]/div[3]/div[1]/div[1]/div[1]/div[2]/ul[1]/li[3]

Более того, я обнаружил, что иногда страница не загружается, и селен ищет элемент, что приводит к ошибке. Вы можете дождаться появления элемента. Вы можете найти больше информации здесь .

. С их комбинацией ваш код будет:

from selenium import webdriver
from selenium.webdriver.common.by import By
from selenium.webdriver.support.ui import WebDriverWait
from selenium.webdriver.support import expected_conditions as EC


browser = webdriver.Firefox()
browser.get('https://www.flickr.com/')
s = browser.find_element_by_id('search-field')
s.send_keys('volleyball')
s.submit()

s = WebDriverWait(browser, 10).until(EC.presence_of_element_located((By.XPATH, "/html[1]/body[1]/div[1]/div[1]/div[3]/div[1]/div[1]/div[1]/div[2]/ul[1]/li[3]")))
s.click()
0 голосов
/ 06 октября 2019

Вы можете попробовать XPath здесь:

s = browser.find_element_by_xpath("//li[contains(@class, 'style-button')]")

Надеюсь, это немного поможет.

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