как получить названия продуктов на веб-сайте, когда они скрыты с наложением? - PullRequest
0 голосов
/ 02 июля 2019

Я пытаюсь захватить все имена устройств на https://www.bell.ca/Mobility/Smartphones_and_mobile_internet_devices. Однако, когда я пытаюсь захватить селектор CSS с помощью гаджета, появляется наложение, которое не позволяет вам выбрать заголовок симя.

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

attribute_value = WebDriverWait(driver, 2).until(EC.visibility_of_element_located((By.XPATH, '//*[@id="div_product_list_item_div_product_list_item_0"]/div[1]/div[2]/a/div[2]/span[1]')))

и проходил итерации элементов, но диапазон может быть изменен.

def phoneList():


    driver.get("https://www.bell.ca/Mobility/Smartphones_and_mobile_internet_devices")

    attribute_value = WebDriverWait(driver, 2).until(EC.element_to_be_clickable((By.XPATH, '//*[@id="productListWithFilters"]/div[3]'))).\
        get_attribute("class='rsx-product-name hidden-xs hidden-sm selectorgadget_suggested'")


    print(attribute_value)

Я надеюсь захватить все имена устройств и поместить их всписок независимо от размера.

1 Ответ

1 голос
/ 02 июля 2019

У меня были проблемы с получением всех элементов с данными, которые вы использовали, но попробуйте это вместо:

Используйте find_elements_by_css_selector, чтобы найти все элементы имени устройства.Переберите их, возьмите текст и добавьте в список.

list = []

cssSelector = '#productListWithFilters .rsx-product-list-product-name-group-bottom span:nth-child(1)'

devices = driver.find_elements_by_css_selector(cssSelector)

for i in devices:

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