Итерация по всему списку с использованием селена - PullRequest
0 голосов
/ 16 апреля 2020

Я пытаюсь написать сценарий в селене, который будет вводить каждое добавление по определенной ссылке, а затем нажимать кнопку на каждой из этих страниц рекламы. У меня проблемы с настройкой сценария, чтобы определить, как go к одному объявлению, а затем перейти к другому. Ссылка в вопросе:

Итак, вот список сообщений: [! [Введите описание изображения здесь] [1]] [1]

Сценарий должен ввести добавить, нажать кнопку ответа а затем перейти к другому дополнению. [! [введите описание изображения здесь] [2]] [2] Ниже приведен скрипт, который мне удалось сделать:

config = ConfigParser()
driver=webdriver.Chrome(executable_path="C:/Users/User/Desktop/script/chromedriver.exe")

config.read('settings.ini')
link1 = config['Links']['key1']

for each_section in config.sections():
    for(each_key, each_val) in config.items(each_section):
        driver.get(each_val)
        element = driver.find_elements_by_class_name("rows")

        for items in element:
            elem = items.find_elements_by_class_name("result-row")
            elem.click()

1 Ответ

2 голосов
/ 16 апреля 2020

Сначала захватите все объявления href значение в list, а затем iterate и перейдите на страницу каждой рекламы, а затем нажмите кнопку ответа.

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

driver=webdriver.Chrome()
driver.get("https://cnj.craigslist.org/search/mob")
links=WebDriverWait(driver,20).until(EC.visibility_of_all_elements_located((By.CSS_SELECTOR,"ul.rows a.result-title.hdrlnk")))
adslinks=[link.get_attribute("href") for link in links]

for ads in adslinks:
    #navigate each add link
    driver.get(ads)
    #Click on Reply button
    WebDriverWait(driver, 20).until(EC.element_to_be_clickable((By.CSS_SELECTOR, "button.reply-button.js-only"))).click()

Обновите ответ с помощью нажмите ссылку Gmail.

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

driver=webdriver.Chrome()
driver.get("https://cnj.craigslist.org/search/mob")
links=WebDriverWait(driver,20).until(EC.visibility_of_all_elements_located((By.CSS_SELECTOR,"ul.rows a.result-title.hdrlnk")))
adslinks=[link.get_attribute("href") for link in links]

for ads in adslinks:

    driver.get(ads)
    #Click on Reply button
    WebDriverWait(driver, 20).until(EC.element_to_be_clickable((By.CSS_SELECTOR, "button.reply-button.js-only"))).click()
    #Click on Gmail
    WebDriverWait(driver, 20).until(EC.element_to_be_clickable((By.CSS_SELECTOR, "a.reply-email.gmail"))).click()
    #Pause few seconds to check
    time.sleep(2)
    #move to new window for gmail account
    driver.switch_to.window(driver.window_handles[-1])
    #Perform your operation here

    #Close the new window
    driver.close()
    # Pause few seconds to check
    time.sleep(0.5)
    driver.switch_to.window(driver.window_handles[-1])
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...