Я озадачен кнопкой «загрузить больше» для раздела навыков в Linkedin. Я получаю эту ошибку при поиске xpath для кнопки: selenium.common.exceptions.NoSuchElementException: Message: no such element: Unable to locate element
Проблема заключается в том, что мой элемент не отображается на странице, поэтому я пытался найти способ непрерывной прокрутки на странице. пока кнопка не видна. Я пытаюсь сделать forl oop из нескольких профилей.
Мой соответствующий код:
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"]')
Попытки 1.
actions = ActionChains(driver)
actions.move_to_element(loadmore_skills).perform()
#actions.move_to_element_with_offset(loadmore_skills, 0, 0).perform()
loadmore_skills.click()
С actions.move_to_element
страница прокручивается чуть ниже элемента, так что элемент больше не виден, и впоследствии возникает та же ошибка.
Я также пробовал move_to_element_with_offset, но это не изменилось там, где страница прокручивается до.
2.
coordinates = loadmore_skills.location_once_scrolled_into_view
driver.execute_script('window.scrollTo({}, {});'.format(coordinates['x'], coordinates['y']))
Это возвращает то же сообщение об ошибке
3.
loadmore_skills=WebDriverWait(driver,30).until(EC.element_to_be_clickable((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"]')))
Это возвращает ту же ошибку, а также.
4.
driver.execute_script("arguments[0].scrollIntoView();", loadmore_skills)
Не уверен, как еще это сделать. Мы очень ценим вашу помощь.
ОБНОВЛЕНИЕ: Попытка решения @Dipak перемещает меня в конец страницы, и элемент нельзя щелкнуть:
Ошибка трассировки:
Traceback (most recent call last):
File "C:/Users/Root/PycharmProjects/Quant/skillstest.py", line 60, in <module>
EC.element_to_be_clickable((By.XPATH, "//span[text()='Show more']")))
File "C:\Users\Root\PycharmProjects\Quant\venv\lib\site-packages\selenium\webdriver\support\wait.py", line 80, in until
raise TimeoutException(message, screen, stacktrace)
selenium.common.exceptions.TimeoutException: Message: