Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/python/300.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Python:Selenium通过xpath查找元素返回空列表_Python_Html_Selenium_Xpath - Fatal编程技术网

Python:Selenium通过xpath查找元素返回空列表

Python:Selenium通过xpath查找元素返回空列表,python,html,selenium,xpath,Python,Html,Selenium,Xpath,我正在尝试获取此网站上交互式图表的“打开”、“高”、“低”和“关闭”值: 这是元素的xpath:/*[@id=“chart area”]/div/div[3]/table/tbody/tr[1]/td[2]/div/div[3]/div[2]/div/span[1] 我在html调试器上添加了一个属性name,试图通过\u name查找\u元素,但它也返回了一个空列表。find_by_class_name方法返回无法搜索复合值的错误。每当我将鼠标悬停在图表上并在控制台中打印时,我需要获取打开、高

我正在尝试获取此网站上交互式图表的“打开”、“高”、“低”和“关闭”值:

这是元素的xpath:
/*[@id=“chart area”]/div/div[3]/table/tbody/tr[1]/td[2]/div/div[3]/div[2]/div/span[1]

我在html调试器上添加了一个属性
name
,试图通过\u name查找\u元素,但它也返回了一个空列表。
find_by_class_name
方法返回无法搜索复合值的错误。每当我将鼠标悬停在图表上并在控制台中打印时,我需要获取打开、高、低和关闭值

我试图在图表区域上移动鼠标的同时获取值。我不知道这是否是因为该字段是动态的,因为它随着我在图表上的滚动而变化

编辑:值位于图表的左上角,当您在图表区域中移动鼠标时,光标将捕捉到该点,数据将更新。即使在数据的原始版本中,当使用
classnames=“line content”
css\u选择器='html body'
xpath='/html/body/table/tbody/tr/td[2]'时,我也无法获取元素的内容

输出如下:
消息:无法定位元素:
消息:无法定位元素:/html/body/table/tbody/tr/td[2]

我的代码:

driver = webdriver.Firefox()
driver.get("https://www.investing.com/currencies/eur-usd-chart")
open_value_1 = driver.find_elements(By.XPATH, '//*[@id="chart-area"]/div/div[3]/table/tbody/tr[1]/td[2]/div/div[3]/div[2]/div/span[1]')

# If mouse moved and the value changed - print it
while True:
    open_value_2 = driver.find_elements(By.XPATH, '//*[@id="chart-area"]/div/div[3]/table/tbody/tr[1]/td[2]/div/div[3]/div[2]/div/span[1]')
    if open_value_2 is not open_value_1:
        print(open_value_2)
    time.sleep(1)

可能您的Xpath存在一些问题

(//*[@id="chart-area"]/div/div[3]/table/tbody/tr[1]/td[2]/div/div[3]/div[2]/div/span[1]) 
你可以试试下面的Xpath

//*[@id="chart-area"]/div/div[3]/table/tbody/tr[1]/td[2]/div/div[3]/div[1]/div/span[1]

该站点上的元素具有适当的ID,那么,您究竟为什么不使用它们,而是将这个疯狂的xpath与索引放在一起?你怎么知道它是正确的?为什么你的代码中有绝对的xpath?即使您的xpath是正确的,当关联下的dom更改时,它也会失败。另外,请给我们指出网页中的高、低等。@KirilS。我没有找到任何ID,请告诉我在哪里可以找到它们,以便我可以相应地更改脚本以使其正常工作。@testerjoe2我编辑了我的帖子,我找到了原始数据网站,该网站将数据提供给图表,但无法按类名、css路径或xpath找到元素。就我所能看到的元素
@ID=“chart area”
位于iframe的第四层,这意味着您需要切换到每一帧。或者这一层//*[@id=“chart area”]/div/div[3]/table/tbody/tr[1]/td[2]/div/div/div[3]/div[1]/div/span[1]///span[@class=“窗格图例项值窗格图例行main”]此xpath还返回错误
无效:语法错误:表达式不是合法表达式。
。正如@KirilS所解释的,这可能是因为网站上有多个框架。对我来说,Xpath正在运行@VascoFerreira//*[@id=“chart area”]/div/div[3]/table/tbody/tr[1]/td[2]/div/div/div[3]/div[1]/span[@class=“pane legend item value title pane legend line”]我使用了以下代码:
浏览器。通过Xpath('/*[@id=“chart area=”查找元素]/div/div[3]/table/tbody/tr[1]/td[2]/div‌​/div[3]/div[1]/div/s‌​潘[1]/span[@class=”‌​窗格图例项val‌​ue标题窗格图例行“]
返回:
消息:选择器无效:无法找到带有xpath表达式的元素