首页 > 解决方案 > Selenium move_to_element 在循环中移动所有元素

问题描述

我编写了一个代码,可以登录到 LinkedIn,进入销售导航页面,并在每个配置文件元素中移动。

问题出现在以下几行中(确切地说是 action.move_to_element(element).perform())。“元素”包含配置文件。

elements = driver.find_elements_by_xpath("//ol[@class='search-results__result-list']/li")
for element in elements:
    action.move_to_element(element).perform()

action.move_to_element 并没有准确地去它应该去的地方。即对于第四个元素,它不会移动到第四个元素,而是将前四个元素一个接一个地移动。同样,对于第五个元素,它将一个一个地移动到前五个元素上。等等。

这是完整的代码。

from selenium import webdriver
from selenium.webdriver.common.action_chains import ActionChains
import time
driver = webdriver.Chrome('C:\\Program Files (x86)\\chromedriver.exe')

driver.get('https://www.linkedin.com/uas/login')
elementID = driver.find_element_by_id('username')
elementID.send_keys('')
elementID = driver.find_element_by_id('password')
elementID.send_keys('')
elementID.submit()

url = 'https://www.linkedin.com/sales/search/people?doFetchHeroCard=false&geoIncluded=103644278&logHistory=true&page=1&rsLogId=757633298&searchSessionId=5LvWxKggSSC4Ozevq4%2BRCg%3D%3D&titleIncluded=%2522Real%2520Estate%2520Agent%2522%2520NOT%2520%2522%2520Licensed%2522&titleTimeScope=CURRENT'
driver.get(url)
time.sleep(3)

action =  ActionChains(driver)
elements = driver.find_elements_by_xpath("//ol[@class='search-results__result-list']/li")
for element in elements:
    action.move_to_element(element).perform()

标签: pythonseleniumselenium-webdriverweb-scraping

解决方案


我认为这是因为您正在向 ActionChain 添加一个新的 move_to_element 操作,然后每次迭代都执行整个链。您需要在循环之后一次全部执行()(或每次都创建一个新的 ActionChain)。

for element in elements:
    action.move_to_element(element)
action.perform()

推荐阅读