首页 > 解决方案 > Selenium - 即使在验证后也无法找到元素

问题描述

这几个月来一直运行良好,但现在抛出错误。这是一个非常简单的代码:打开 Chrome 并拉出一个元素。它现在告诉我它无法找到该元素。

我在 Chrome 窗口打开的情况下检查了元素并验证了 XPATH,它与代码中的内容完全匹配。我已经截取了它正在运行的页面的屏幕截图,一切看起来都很好。

我错过了什么?

在此处输入图像描述

from selenium import webdriver
from selenium.webdriver.common.keys import Keys
import webbrowser
from selenium import webdriver
from webdriver_manager.chrome import ChromeDriverManager
import time

site_lat = 34.29421
site_lon = -97.44667

def watershed_lookup(site_lat, site_lon):
    op=webdriver.ChromeOptions()
    #op.add_argument('--headless')
    op.add_argument('window-size=1920x1080')

    url_water = 'https://mywaterway.epa.gov/community/'+str(site_lon)+','+str(site_lat)+'/overview'

    driver = webdriver.Chrome(ChromeDriverManager().install(), options = op)
    driver.get(url_water)
    time.sleep(3)
    element = driver.find_element_by_xpath("//*[@id=\"root\"]/div/div[4]/div[2]/div[2]/div[1]/div[1]/div/p[2]")           
    start1 = 'WATERSHED: '
    end1 = '('
    end2 = ')'
    s = element.text

    watershed_name = s[s.find(start1)+len(start1):s.rfind(end1)]
    watershed_id = s[s.find(end1)+len(end1):s.rfind(end2)]

    print("Watershed Name: " + watershed_name)
    print("Watershed ID: " + watershed_id)
    driver.close()


watershed_lookup(site_lat, site_lon)

标签: pythonseleniumwebdriver

解决方案


您使用的 Xpath 是绝对 Xpath,请尝试使用相对 Xpath 查找该元素。我已经看到绝对 xpath 使用开发工具工作并在运行时失败。使用显式等待,直到该元素可见/可交互,然后验证。


推荐阅读