有一个地图设计网站,该网站的信息已由“ web.archive.org”作为快照。不过,几乎所有我需要的信息都可以在此快照中读取。该网站是“ https://web.archive.org/web/20130601211515/http://rasatlar.dsi.gov.tr/”。
当鼠标放在本身具有几何位置的点图像上时,带有代码的标题以及其他信息在右下角的框内可见,并且可以看到其X和Y位置(纬度,经度)信息在右下角。我需要收集该站点保留的X,Y位置和标题,代码信息。
下面的脚本尝试在框中打印文本,但我也遇到此错误。
from selenium import webdriver
from selenium.webdriver.common.by import By
from selenium.webdriver.common.action_chains import ActionChains
driver = webdriver.Chrome(executable_path=r'D:\chromedriver.exe')
driver.implicitly_wait(30)
base_url = "https://www.katalon.com/"
verificationErrors = []
accept_next_alert = True
driver.get("https://web.archive.org/web/20130601211515/http://rasatlar.dsi.gov.tr/")
a= driver.find_element_by_id("OpenLayers_Geometry_Point_6795")
hover = ActionChains(driver).move_to_element(a)
#driver.find_element_by_id("draggable").click()
b= driver.find_element_by_xpath((By.XPATH,"//*[@id='draggable']/p[1]")).text
print (b)
错误:
WebDriverException: invalid argument: 'value' must be a string
答案 0 :(得分:0)
编辑(针对更新的问题):
您的xpath(如下)不起作用:
all_points = WebDriverWait(driver, 30).until(EC.presence_of_all_elements_located((By.XPATH,"//div[contains(@id,'OpenLayers_Geometry_Point_')]/img")))
正确的xpath是:
//div[contains(@id,'OpenLayers_Layer_Vector_RootContainer')]//*[contains(@id,'OpenLayers_Geometry_Point_')]
您似乎有兴趣从下图中显示的框中获取信息:
问题是,一旦您将鼠标移开,信息就会消失。但是,您可以使用CDT中提供的“中断”功能使其停留。
我在下面的图片(右侧)中张贴了HTML结构,您可以参考该HTML结构以获取正确的xpath:
用于获取标头元素的Xpath(即E17A008 / TARSUSIRMAĞI):
//*[@id="draggable"]/h1
Xpath获得第二个元素,即MUHATKÖPRÜSÜ
//*[@id="draggable"]/p[1]
类似地,您应该能够获得其他元素的相关xpath。
如何使用Break:
右键单击“ Right Box”(不用担心,即使它是空框)。
单击检查->右键单击开发工具中显示的元素,即<div id="draggable" class="ui-widget-content ui-draggable"></div>
现在,如果您尝试选择另一个地址,则只要对此元素进行任何修改,该地址都会中断。