在学习selenimu中,总是发现元素定位不到,想了各种办法,最后总结大致有两个原因。
1.等待时间不够,页面还没有完全渲染就进行操作,使用time模块进行等待。
2.换了页面后,发现定位不到元素,因为浏览器还停留在最开始的页面,处理办法,加一行代码。
browser.switch_to.window(browser.window_handles[-1])定位到最新打开窗口
browser.switch_to.window(browser.window_handles[-2])定位到倒数第二个窗口
browser.switch_to.window(browser.window_handles[0])定位到最开始页面
from selenium import webdriver
import time
path = 'chromedriver.exe'
browser = webdriver.Chrome(path)
url = 'https://www.lagou.com/wn/'
browser.get(url)
time.sleep(5)
browser.find_element_by_id('search_input').send_keys('python')
time.sleep(2)
button = browser.find_element_by_id('search_button')
button.click()
browser.switch_to.window(browser.window_handles[-1])
time.sleep(2)
a = browser.find_elements_by_css_selector('#jobList .list__YibNq .item__10RTO')
print(a)
for li in a:
c = li.find_element_by_css_selector('#openWinPostion').text
d = li.find_element_by_css_selector('.money__3Lkgq').text
h = li.find_element_by_css_selector('.p-bom__JlNur').text
g = li.find_element_by_css_selector('.company-name__2-SjF').text
print(c,h,g)
运行结果:
缺少那一行代码的话,结果为: