为了账号安全,请及时绑定邮箱和手机立即绑定

即使找到元素后也无法单击元素-Python selenium

即使找到元素后也无法单击元素-Python selenium

SMILET 2022-10-25 15:16:16
加载更多按钮让我痛苦了一段时间。我正在寻找创建一个循环,我在 Linkedin 页面的技能部分单击“加载更多”。但是,此按钮并未始终被单击。我的印象是问题在于该元素在页面上不可见。所以,我有一个分段滚动,它继续向下移动页面,直到找到元素。但令人费解的是,即使页面现在移动到了正确的位置,元素并没有被点击。没有错误被抛出。我已经尝试了几乎所有版本的元素位置(xpath、类名、css 选择器、完整的 xpath)。如果按钮在页面上可见,为什么不单击该按钮?相关代码:##log into Linkedinlinkedin_urls=['https://www.linkedin.com/in/julie-migliacci-revent/']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')driver.maximize_window()WebDriverWait(driver, 10).until(    EC.element_to_be_clickable((By.NAME, "session_key"))).send_keys("EMAIL")WebDriverWait(driver, 10).until(    EC.element_to_be_clickable((By.NAME, "session_password"))).send_keys("PASSWORD")WebDriverWait(driver, 10).until(    EC.element_to_be_clickable((By.XPATH, "//button[@class='btn__primary--large from__button--floating']"))).click()linkedin_urls=['https://www.linkedin.com/in/julie-migliacci-revent/', 'https://www.linkedin.com/in/kathleen-meyers-126a7931']for linkedin_url in linkedin_urls:   driver.get(linkedin_url)   looking_for_element = True   ldmore = ''   while looking_for_element:       elements = driver.find_elements_by_xpath('/html/body/div[7]/div[3]/div/div/div/div/div[2]/main/div[2]/div[6]/div/section/div[2]/button/span[1]')       if len(elements) > 0:          ldmore = elements[0]          ldmore.click()          looking_for_element = False       else:           global_copyright = driver.find_elements_by_css_selector('#globalfooter-copyright')           if len(global_copyright) > 0:               looking_for_element = False           else:               body = driver.find_element_by_css_selector('body')               sleep(5)               body.send_keys(Keys.PAGE_DOWN)当底层解决方案不可见时,我还没有看到关于元素问题的讨论。该代码旨在在找到元素后停止 - 并且正确执行此操作。但它只是没有点击元素。我不确定这是为什么。
查看完整描述

1 回答

?
胡说叔叔

TA贡献1804条经验 获得超8个赞

@Datanovice 建议使用 javascript 来强制点击就像一个魅力。最初,当我尝试调整解决方案时,我收到了错误selenium.common.exceptions.WebDriverException: Message: unknown error: Cannot read property 'click' of null

这个错误是因为我一直在使用EC.element_to_be_clickable. 相反,当我将 java 方法与 配对时EC.visibility_of_element_located,单击始终有效。

编码:

ldmore = WebDriverWait(driver, 30).until(EC.visibility_of_element_located((By.XPATH,'xpath')))
driver.execute_script("arguments[0].click();", ldmore)


查看完整回答
反对 回复 2022-10-25
  • 1 回答
  • 0 关注
  • 159 浏览
慕课专栏
更多

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信