gpt4 book ai didi

python - 动态生成的元素 -NoSuchElementException : Message: no such element: Unable to locate element?

转载 作者:行者123 更新时间:2023-12-04 15:30:37 27 4
gpt4 key购买 nike

我无法在 Linkedin 页面上选择加载更多按钮。我在查找 xpath 时收到此错误:selenium.common.exceptions.NoSuchElementException: Message: no such element: Unable to locate element

我怀疑问题是当时该按钮在页面上不可见。所以我尝试了 actions.move_to_element。但是,页面滚动到元素下方,因此元素不再可见,随后发生相同的错误。

我也试过 move_to_element_with_offset,但这并没有改变页面滚动到的位置。

如何滚动到页面上的正确位置,以便成功选择元素?

我的相关代码:

import parameters
from selenium.webdriver.common.action_chains import ActionChains
from selenium import webdriver

ChromeOptions = webdriver.ChromeOptions()
driver = webdriver.Chrome('C:\\Users\\Root\\Downloads\\chromedriver.exe')

driver.get('https://www.linkedin.com/login?fromSignIn=true&trk=guest_homepage-basic_nav-header-signin')
sleep(0.5)

username = driver.find_element_by_name('session_key')

username.send_keys(parameters.linkedin_username)
sleep(0.5)

password = driver.find_element_by_name('session_password')
password.send_keys(parameters.linkedin_password)
sleep(0.5)

sign_in_button = driver.find_element_by_xpath('//button[@class="btn__primary--large from__button--floating"]')
sign_in_button.click()

driver.get('https://www.linkedin.com/in/kate-yun-yi-wang-054977127/?originalSubdomain=hk')

loadmore_skills=driver.find_element_by_xpath('//button[@class="pv-profile-section__card-action-bar pv-skills-section__additional-skills artdeco-container-card-action-bar artdeco-button artdeco-button--tertiary artdeco-button--3 artdeco-button--fluid"]')

actions = ActionChains(driver)
actions.move_to_element(loadmore_skills).perform()
#actions.move_to_element_with_offset(loadmore_skills, 0, 0).perform()
loadmore_skills.click()

最佳答案

玩了一圈之后,我好像找到问题出在哪里了。错误

selenium.common.exceptions.NoSuchElementException: Message: no such element: Unable to locate element: {"method":"xpath","selector":"//button[@class="pv-profile-section__card-action-bar pv-skills-section__additional-skills artdeco-container-card-action-bar artdeco-button artdeco-button--tertiary artdeco-button--3 artdeco-button--fluid"]"} (Session info: chrome=81.0.4044.113)

总是正确地陈述它遇到的问题,因此它无法找到元素。可能的原因包括:

  • 元素在执行时不存在
  • 动态生成
  • 内容冲突的名字

在您的案例中,这是第二点。当您向下滚动时,显示的内容会动态加载。因此,当它首次加载您的个人资料时,技能部分实际上并未出现在 DOM 中。因此,要解决此问题,您只需滚动到该部分,以便将其应用到 DOM 中。

这一行是这里的技巧。它会将它定位到正确的面板,从而将数据加载并应用到 DOM。

driver.execute_script("window.scrollTo(0, 1800)")

这是我的代码(请根据需要更改)

from time import sleep

# import parameters
from selenium.webdriver.common.action_chains import ActionChains
from selenium import webdriver
from selenium.webdriver.support.wait import WebDriverWait

ChromeOptions = webdriver.ChromeOptions()
driver = webdriver.Chrome('../chromedriver.exe')

driver.get('https://www.linkedin.com/login?fromSignIn=true&trk=guest_homepage-basic_nav-header-signin')
sleep(0.5)

username = driver.find_element_by_name('session_key')

username.send_keys('')
sleep(0.5)

password = driver.find_element_by_name('session_password')
password.send_keys('')
sleep(0.5)

sign_in_button = driver.find_element_by_xpath('//button[@class="btn__primary--large from__button--floating"]')
sign_in_button.click()


driver.get('https://www.linkedin.com/in/kate-yun-yi-wang-054977127/?originalSubdomain=hk')

sleep(3)
# driver.execute_script("window.scrollTo(0, 1800)")
sleep(3)
loadmore_skills=driver.find_element_by_xpath('//button[@class="pv-profile-section__card-action-bar pv-skills-section__additional-skills artdeco-container-card-action-bar artdeco-button artdeco-button--tertiary artdeco-button--3 artdeco-button--fluid"]')


actions = ActionChains(driver)
actions.move_to_element(loadmore_skills).perform()
#actions.move_to_element_with_offset(loadmore_skills, 0, 0).perform()
loadmore_skills.click()

输出

enter image description here

更新

考虑到您的新问题,您需要实现一个连续滚动方法,使您能够动态更新 skills 部分。这需要大量更改,理想情况下应作为另一个问题提出。

我还通过将滚动设置为正确的阈值找到了一个简单的解决方案。对于 y=3200 似乎适用于我检查过的所有配置文件,包括你的、我的和其他一些配置文件。

driver.execute_script("window.scrollTo(0, 3200)")

关于python - 动态生成的元素 -NoSuchElementException : Message: no such element: Unable to locate element?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/61298677/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com