Python selenium error: no such element: able to locate eleme



我一直在试图找出这个错误,直到现在几个小时。

我试着点击屏幕上的红色按钮,但是不知为什么我不能使用xpath方法。

错误信息如下:

Message: no such element: Unable to locate element: {"method":"xpath","selector":"//*[@id="mapContainer"]"}
(Session info: chrome=107.0.5304.107)

我的目标是抓取当按钮被点击时弹出屏幕显示的信息。


from selenium import webdriver  # 셀레니움을 활성화
from selenium.webdriver import ActionChains
from selenium.webdriver.common.keys import Keys
from selenium.webdriver.common.by import By
import time
import pandas as pd
import numpy as np
import re
from datetime import datetime
dr = webdriver.Chrome()  # 크롬 드라이버를 실행하는 명령어를 dr로 지정
dr.get('https://rawris-am.ekr.or.kr/wrms/')  # 드라이버를 통해 url의 웹 페이지를 오픈
time.sleep(2)  #2초 대기
act = ActionChains(dr)  # 드라이버에 동작을 실행시키는 명령어를 act로 지정
dr.switch_to.frame('DivMapOpenLayers')
time.sleep(1)
element1 = dr.find_element(By.XPATH, '//*[@id="xcontainer_reservoir"]/table[2]/tbody/tr/td/div[1]/label[1]/input')
CHOICE = {'경기':2, '강원':3, '충북':4, '충남':5, '전북':6, '전남':7, '경북':8, '경남':9, '제주':10}
CHOICE = CHOICE.get('전남') 
dr.find_element(By.XPATH, f'//*[@id="xcontainer_reservoir"]/table[3]/tbody/tr[{CHOICE}]/td[2]').click()
res_detail = dr.find_element(By.XPATH, f'//*[@id="xcontainer_reservoir"]/table[3]/tbody/tr[2]/td[2]').click()
res_detail = dr.find_element(By.XPATH, f'//*[@id="xcontainer_reservoir"]/table[3]/tbody/tr[2]/td[2]').click()
ee = dr.find_element(By.XPATH, '//*[@id="mapContainer"]')  # error caused
ee.get_attribute('style')
dr.execute_script("arguments[0].setAttribute('style','display: block;')", ee);
ee.get_attribute('style')

1。在将鼠标光标放在

点之前2。当我把鼠标光标放在红点

上时网站网址:https://rawris-am.ekr.or.kr/wrms/谢谢提前!!

我不认为你做错了什么。添加显式等待总是会提高可靠性,因为您不太容易受到时间问题的影响:

iframe = WebDriverWait(dr, 10).until(EC.presence_of_element_located((By.ID, "DivMapOpenLayers")))
driver.switch_to.frame(iframe)
CHOICE = {'경기':2, '강원':3, '충북':4, '충남':5, '전북':6, '전남':7, '경북':8, '경남':9, '제주':10}
CHOICE = CHOICE.get('전남') 
WebDriverWait(dr, 10).until(EC.presence_of_element_located((By.XPATH, f'//*[@id="xcontainer_reservoir"]/table[3]/tbody/tr[{CHOICE}]/td[2]'))).click()
WebDriverWait(dr, 10).until(EC.presence_of_element_located((By.XPATH, f'//*[@id="xcontainer_reservoir"]/table[3]/tbody/tr[2]/td[2]'))).click()
ee = WebDriverWait(dr, 10).until(EC.presence_of_element_located((By.XPATH, '//*[@id="mapContainer"]')))
print(ee.get_attribute("textContent"))

相关内容

最新更新