python - 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()
解决方案
我认为这是因为您正在向 ActionChain 添加一个新的 move_to_element 操作,然后每次迭代都执行整个链。您需要在循环之后一次全部执行()(或每次都创建一个新的 ActionChain)。
for element in elements:
action.move_to_element(element)
action.perform()