硒错误:元素不可见(两台计算机上的行为不同)

2024-10-04 11:21:56 发布

您现在位置:Python中文网/ 问答频道 /正文

我很纠结于以下问题。这是一个简单的脚本,更新网站上的简历。在

#!/usr/bin/env python3

from selenium import webdriver

# Authentication details
LOGIN = input("Please type your email  ---> ")
PASSWORD = input("Please type your password ---> ")

# Chrome is a default browser, change to appropriated one
browser = webdriver.Chrome()
browser.get('https://www.hh.ru/account/login')

# Authentication
emailel = browser.find_element_by_css_selector('input[type="email"]')
emailel.send_keys(LOGIN)
passel = browser.find_element_by_css_selector('input[type="password"]')
passel.send_keys(PASSWORD)
passel.submit()

# Looking for CV's links
browser.get('https://hh.ru/applicant/resumes')
links = []
resume_els = browser.find_elements_by_css_selector('a.b-resumelist-vacancyname')
for r in resume_els:
    links.append(r.get_attribute('href'))

# Update all CVs
for link in links:
    browser.get(link)
    refresh_button = browser.find_element_by_css_selector('button.HH-Resume-Touch-Button')
    refresh_button.click()

# Quit webdriver
browser.quit()

这段代码在我的电脑上运行得很好,但当我在我的笔记本电脑上运行时,会出现错误“element not visible”(元素不可见):

^{pr2}$

我在电脑上使用相同版本的chrome、chromedriver、python和selenium。Windows是不同的(在我的电脑上是7,在我的笔记本电脑上是8)。你知道为什么这个代码在我的笔记本电脑上不起作用吗? 我尝试使用显式和隐式wait,但元素仍然不可见。在


Tags: browserforinputgetbytypebuttonelement
1条回答
网友
1楼 · 发布于 2024-10-04 11:21:56

这可能是因为显示器和笔记本电脑的屏幕分辨率不同:目标按钮可能在分辨率较高的显示器上可见,而在低分辨率的笔记本电脑上则不可见。在

为了能够单击目标按钮,您可能需要向下滚动页面,如下所示:

refresh_button = browser.find_element_by_css_selector('button.HH-Resume-Touch-Button')
browser.execute_script('arguments[0].scrollIntoView(true);', refresh_button)
refresh_button.click()

更新

我发现有两个按钮具有相同的CSS选择器-第一个是不可见的,所以您得到ElementNotVisibleException

你可以用

^{pr2}$

相关问题 更多 >