Как перебирать клики по списку веб-элементов в Selenium? - PullRequest
1 голос
/ 27 апреля 2020

Я хотел бы нажимать на последовательные ссылки, чтобы найти company's domains на Job Posting page, при этом WebDriver использует Python.

Однако WebDriver нажимает на первую ссылку только снова и снова.

Код :

import pandas as pd
from selenium import webdriver
from time import sleep
driver = webdriver.Chrome('/Users/user/Downloads/chromedriver_win32/chromedriver')
driver.get('https://dribbble.com/jobs')
assert 'Dribbble' in driver.title
total_web = []
quotes = len(driver.find_elements_by_class_name("job-board-job-list"))
for quote in range(quotes): 
        driver.find_element_by_class_name('job-board-job-title').click()
        for a in driver.find_elements_by_xpath("//*[@id='content']/div[3]/div[1]/div[1]/div/ul/li/a"):
            website = a.get_attribute('href')

        new1 = ((website))
        total_web.append(new1)
        driver.back()

        quote+=1

df_web = pd.DataFrame(total_web,columns=['website'])
driver.close()

1 Ответ

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

Причина, по которой она нажимает 1-ую ссылку из-за этой строки.

driver.find_element_by_class_name('job-board-job-title').click()

Это всегда будет щелкать по первому элементу.

Вам необходимо использовать индексирование. Попробуйте код ниже.

elements=driver.find_elements_by_class_name("job-board-job-list")
quotes = len(elements)
for quote in range(quotes):
    #Added this line to avoid stale which re-assigned the element again.
    elements = driver.find_elements_by_class_name("job-board-job-list")
    elements[quote].click()
...