使用硒循环通过列表

时间:2020-04-16 15:24:31

标签: python selenium selenium-webdriver automation selenium-chromedriver

我正在尝试使用Selenium编写脚本,该脚本将在特定链接上输入每个添加,然后在每个广告页面中单击按钮。我无法让脚本确定如何转到一个广告,然后再转到另一个广告。有问题的链接是

因此,这是帖子列表: [![在此处输入图片描述] [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 个答案:

答案 0 :(得分:2)

首先在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])