Нажав несколько элементов на одной странице, используя селен - PullRequest
0 голосов
/ 20 ноября 2018

Моя основная цель - перейти на этот конкретный веб-сайт, щелкнуть по каждому из продуктов, иметь достаточно времени, чтобы почистить данные по выбранному продукту, а затем вернуться, чтобы выбрать другой продукт со страницы, пока все продукты не будут просмотрены.и очищенный (код очистки, который я не включил).

Мой код открывает Chrome для перенаправления на нужный мне сайт, генерирует список ссылок для клика по class_name.Это та часть, на которой я застрял, и я бы подумал, что мне нужен цикл for, чтобы перебирать список ссылок, чтобы кликать и возвращаться к оригиналу.Но я не могу понять, почему это не сработает.

Вот мой код:

import csv
import time
from selenium import webdriver
import selenium.webdriver.chrome.service as service
import requests
from bs4 import BeautifulSoup


url = "https://www.vatainc.com/infusion/adult-infusion.html?limit=all"
service = service.Service('path to chromedriver')
service.start()
capabilities = {'chrome.binary': 'path to chrome'}
driver = webdriver.Remote(service.service_url, capabilities)
driver.get(url)
time.sleep(2)
links = driver.find_elements_by_class_name('product-name')


for link in links:
    link.click()
    driver.back()
    link.click()

1 Ответ

0 голосов
/ 20 ноября 2018

У меня есть другое решение вашей проблемы.

Когда я тестировал ваш код, он показал странное поведение.Исправлены все проблемы, которые у меня были с использованием xpath.

url = "https://www.vatainc.com/infusion/adult-infusion.html?limit=all"
driver.get(url)
links = [x.get_attribute('href') for x in driver.find_elements_by_xpath("//*[contains(@class, 'product-name')]/a")]
htmls = []
for link in links:
    driver.get(link)
    htmls.append(driver.page_source)

Вместо того, чтобы идти вперед и назад, я сохранил все ссылки (названные ссылками) и перебрал этот список.

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