51Testing软件测试论坛

标题: Python selenium定位不到网页元素 [打印本页]

作者: 测试积点老人    时间: 2021-10-19 11:49
标题: Python selenium定位不到网页元素
爬取某文库,代码如下:
  1. from selenium import webdriver
  2. import time
  3. driver = webdriver.Chrome()
  4. driver.get('https://wenku.baidu.com/view/83a62ad5316c1eb91a37f111f18583d048640f3c')
  5. time.sleep(5)
  6. elements=driver.find_elements_by_class_name('read-all')#继续阅读
  7. element=elements[0]
  8. #print(element)
  9. element.click()
  10. time.sleep(5)
  11. yhm=driver.find_elements_by_css_selector('#TANGRAM__PSP_11__footerULoginBtn')#用户名登录
  12. #print(yhm)
  13. yhmd=yhm[0]
  14. yhmd.click()
  15. yh=driver.find_elements_by_css_selector('#TANGRAM__PSP_11__userName')#用户名
  16. #print(yh)
  17. yh=yh[0]
  18. yh.send_keys('用户名')
  19. mm=driver.find_elements_by_css_selector('#TANGRAM__PSP_11__password')#密码
  20. mm=mm[0]
  21. mm.send_keys('密码')
  22. dl=driver.find_elements_by_css_selector('#TANGRAM__PSP_11__submit')#点击登录按钮
  23. dl=dl[0]
  24. dl.click()
  25. time.sleep(10)
  26. gk=driver.find_elements_by_class_name('close-btn default-bg')#关闭广告
  27. gkc=gk[0]
  28. gkc.click()
  29. zc=driver.find_elements_by_class_name('read-all')#再次点击继续阅读
  30. zcc=zc[0]
  31. zcc.click()
  32. xt=driver.find_elements_by_class_name("reader-word-layer")#爬取文章内容
  33. for i in xt:
  34.     print(i.text)
复制代码
我搜不到的那个元素为登录完毕后弹出的广告关闭按钮,在代码的26行。另外因为再输入完用户名密码登录之后会有一个旋转图片的验证,我都是手动验证的。所以我在25行设置了一个time.sleep,也可以给后面的元素一点加载时间。
另外我也没找到frame。所以到底是什么原因导致了这样的错误,希望有懂的人指点一下。

作者: 海海豚    时间: 2021-10-20 09:24
可以用隐性等待,显性等待时间可能也不够
作者: qqq911    时间: 2021-10-20 11:43
找他的上一层试试
作者: jingzizx    时间: 2021-10-20 17:26
看看还是不是在这个页面上




欢迎光临 51Testing软件测试论坛 (http://bbs.51testing.com/) Powered by Discuz! X3.2