python+selenium+webdriver定位不到页面元素,新人求帮忙,困扰几天了

使用Python+selenium+webdriver做自动化测试,发现抓取不到页面元素。我的流程是这样的:打开百度首页,输入segementfault点击搜索,选择第一个搜索结果,进入思否首页之后,不管我怎么做,页面上的所有元素都抓取不到,提示我selenium.common.exceptions.NoSuchElementException: Message: Unable to locate element: 。

但是很奇怪的是,我如果直接进入思否的首页,不通过百度搜索,就可以抓取到页面的元素,代码都是一样的,没做任何改变。

代码如下:

from selenium import webdriver
from selenium.webdriver.common.keys import Keys
from selenium.webdriver.common.by import By
from selenium.webdriver.support.wait import WebDriverWait
from selenium.webdriver.support import expected_conditions as EC
import time
driver = webdriver.Firefox()
driver.get("https://www.baidu.com/")
print(driver.title)
driver.find_element_by_xpath('//*[@id="kw"]').send_keys('segmentfault')
driver.find_element_by_xpath('//*[@id="su"]').click()
time.sleep(3)
driver.find_element_by_xpath("/html/body/div[1]/div[5]/div[1]/div[3]/div[1]/h3/a").click()
time.sleep(5)
driver.find_element_by_xpath('/html/body/div[4]/div/div/div[1]/div[2]/a[1]').click()
driver.find_element_by_xpath('/html/body/div[4]/div/div/div[2]/div[4]/div[1]/div/a[2]/div[1]/h4').click()

阅读 3.9k
3 个回答
from selenium import webdriver
from selenium.webdriver.common.keys import Keys
from selenium.webdriver.common.by import By
from selenium.webdriver.support.wait import WebDriverWait
from selenium.webdriver.support import expected_conditions as EC
import time
driver = webdriver.Chrome()
driver.get("https://www.baidu.com/")
print(driver.title)
driver.find_element_by_xpath('//*[@id="kw"]').send_keys('segmentfault')
driver.find_element_by_xpath('//*[@id="su"]').click()
time.sleep(3)
driver.find_element_by_xpath("/html/body/div[1]/div[5]/div[1]/div[3]/div[1]/h3/a").click()
time.sleep(5)

driver.switch_to_window(driver.window_handles[-1])

driver.find_element_by_xpath('/html/body/div[4]/div/div/div[1]/div[2]/a[1]').click()
driver.find_element_by_xpath('/html/body/div[4]/div/div/div[2]/div[4]/div[1]/div/a[2]/div[1]/h4').click()

已测试没问题 - - 自行替换 Chrome 为 Firefox

建议打印 raw_html 看一下

需要切换 windows_handle。否则 chromedriver 的焦点还在百度那个 tab,定位不到 新 tab 页元素的。
百度或者谷歌关键字 “selenium driver.current_window_handle”
试试看吧

撰写回答
你尚未登录,登录后可以
  • 和开发者交流问题的细节
  • 关注并接收问题和回答的更新提醒
  • 参与内容的编辑和改进,让解决方法与时俱进
推荐问题