当前位置: 首页 > 知识库问答 >
问题:

使用selenium迭代trhough列表

孟翰海
2023-03-14

我正在尝试用selenium编写脚本,它将在某些链接上输入每个add,然后单击每个广告页面中的按钮。我很难让脚本决定如何转到一个广告,然后再转到另一个。所讨论的链接是

下面是帖子列表:[![在这里输入图片描述][1][1]

脚本应该输入add,点击reply按钮,然后移动到另一个add。[![enter image description here][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个答案

井誉
2023-03-14

首先捕获所有广告href值在列表,然后迭代并浏览每个广告页面,然后单击回复按钮。

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])
 类似资料:
  • 我对RxJava/RxAndroid还不熟悉,但我一直坚持使用我的用例。 我尝试迭代一个

  • 我有一个项目要用C#使用Selenium WebDriver点击web页面上的特定链接,我正在努力找到一种干净的方法,用一个数组来迭代这些链接,以说明特定的情况。 所以总结一下: 需要帮助找到一种方法来创建一个数组,可以在循环中找到要单击的特定链接,因为在搜索了一段时间后,这似乎是最整洁的解决方案。如果有更好的建议,我愿意接受。只是对C#/Selenium完全陌生。

  • 问题内容: 我试图根据当前正在另一个列表上迭代的索引显示来自其他列表的值,但无法弄清楚如何访问各个项目。 如你所见,我尝试使用它,但是它什么也不显示,它只是创建一个空的表头元素。 我的其他数组在视图中的定义如下,如果删除,则可以看到整个数组已打印到表头 如果我错过任何必填信息,请告诉我。 问题答案: 听起来你想同时遍历两个列表,换句话说就是zip()列表。 如果是这种情况,最好在视图中进行操作并在

  • 使用JSF 2.0,我需要显示一个表,其中每一行都包含一个打开弹出窗口的链接。我有两种型号:

  • 简而言之:在我的JSP中,我需要使用C:Foreach jstl迭代一个自定义bean类列表,比如list,MyClass有键和值变量,以及这些变量的getter和setter 细节:类似这样的内容: 在Java代码中,我有: List pairlist=new ArrayList();//MyClass是一个简单的bean类,具有变量“key”和“value”,以及相同的getter和sette