Невозможно щелкнуть по одному из элементов в раскрывающемся списке с помощью селена (python) - PullRequest
0 голосов
/ 29 января 2020

Я не могу нажать кнопку «Поиск фотографий» на flickr (изображение ниже, включая html).

Я пробовал следующее:

sp = browser.find_element_by_partial_link_text('/search/?text=tennis%20shoes')
sp.click()

sp = browser.find_element_by_name('Select photos')
sp.click()

searchPhotos = browser.find_element_by_class_name('Search photos')
searchPhotos.click()

browser.find_element_by_xpath("//class[@name='Search photos']").click()

Но нет из них, кажется, работают. Я учусь, как это сделать, в том числе как использовать xpath, так что, возможно, я не правильно его использую. Любой совет, чтобы указать мне в правильном направлении?

РЕДАКТИРОВАТЬ: полный раздел кода, чтобы ответить на комментарий ниже:

from selenium import webdriver
from selenium.webdriver.common.keys import Keys
from selenium.webdriver.support.ui import Select

profile = webdriver.FirefoxProfile() 
profile.set_preference("browser.download.folderList", 2)
profile.set_preference("browser.download.manager.showWhenStarting", False)
profile.set_preference("browser.download.dir", '/Users/home/Box/Temp-to delete')
profile.set_preference("browser.helperApps.neverAsk.saveToDisk", 'png/jpg')
browser = webdriver.Firefox(firefox_profile=profile, executable_path='/usr/local/bin/geckodriver')

browser.get('https://www.flickr.com/')
searchBar = browser.find_element_by_css_selector('#search-field')
searchBar.send_keys(searchTerm)

browser.find_element_by_xpath(".//*[@data-track='autosuggestNavigate_searchPhotos']").click()

Использование firefox 72.0.2 (64-разрядная версия), python3, geckodriver v0.26.0

enter image description here

Ответы [ 2 ]

0 голосов
/ 30 января 2020

Решено Просто нужно было нажать ENTER, чтобы показать страницу с фотографиями. Вот единственная строка кода, которую я изменил:

    searchBar.send_keys(searchTerm, Keys.ENTER)
0 голосов
/ 29 января 2020

Путь, используемый в вашем XPath, не будет работать. Попробуйте это .//*[@data-track='autosuggestNavigate_searchPhotos'].

. // сообщает Selenium, поэтому ищите где-нибудь в DOM . Звездочка (*) заставит Selenium искать любой элемент (независимо от того, является ли он div, li или любым другим HTML тегом ). Затем он проверит, какой элемент имеет атрибут data-track со значением autosuggestNavigate_searchPhotos . Поскольку есть только один элемент, подобный этому, у нас все хорошо.

Я советую прочитать больше о XPath и немного потренироваться, вы можете начать здесь

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