当前位置: 首页 > 知识库问答 >
问题:

无法通过xpath找到元素(JS激活的网站Selenium chrome)

凌波峻
2023-03-14

我试图刮一个使用JavaScript的网站。我在Selenium中的xpath上看过类似的问题,但它们并没有真正的帮助。我尝试使用请求,但Javascript没有完全加载,所以我使用Selenium chrome驱动程序。

我尝试了完整的xpath、xpath和类名,但无法获得元素。下面是我的代码和html。

site = 'https://finra-markets.morningstar.com/BondCenter/BondDetail.jsp?ticker=C614515&symbol=BBBY4144685'
browser = webdriver.Chrome(executable_path)
browser.get(site)
browser.find_elements_by_xpath('//*[@id="msqt_summary"]/div[2]/table/tbody/tr[1]/td[2]/span[@class="gr_text1"]')
browser.find_elements_by_xpath('//*[@id="no_border_no_center"]/div/div/div[1]/div/div/div[2]/div[2]/table/tbody/tr[1]/td[2]/span[@class="gr_text1"]')

<html xmlns="//www.w3.org/1999/xhtml"><head>
    <meta content="text/html; charset=UTF-8" http-equiv="Content-Type">
    <meta http-equiv="expires" content="12 Jan 2018">
    <title>Bond - Morningstar</title>
    <link href="//quotes.morningstar.com/bondq/static/common/css/reports.css" rel="stylesheet" type="text/css">     

</style>
<script type="text/javascript" src="//quotespeed.morningstar.com/js/qt_loader.js"></script><link rel="stylesheet" type="text/css" href="//finra-markets.morningstar.com/apis/quicktake/quicktake_finra.css"><script type="text/javascript" src="//finra-markets.morningstar.com/apis/quicktake/version_finra.js"></script>
<script type="text/javascript">window.onerror=function(msg){$("body").attr("JSError",msg);}</script>
</head>



<body id="no_border_no_center">
<div class="wrapper">
    <div class="gr_row_a5" id="msqt_summary"> 
               <div class="gr_colm_a2b gr_text1">
                   <table class="gr_table_b1" border="0" cellpadding="0" cellspacing="0" width="100%">
                       <tbody>
                           <tr valign="top">                               
                               <td class="gr_table_colm23">
                                   <h3 class="ms-gl-font10"> CUSIP</h3>                  
                                   <span class="gr_text1"> 075896AB6</span>
                               </td>                                
                            </tr>

共有1个答案

濮阳鸿祯
2023-03-14

元素位于IFRAME内部,您需要首先切换它才能访问元素。

from selenium import webdriver
from selenium.webdriver.support import expected_conditions as EC
from selenium.webdriver.common.by import By
from selenium.webdriver.support.ui import WebDriverWait

site = 'https://finra-markets.morningstar.com/BondCenter/BondDetail.jsp?ticker=C614515&symbol=BBBY4144685'
browser = webdriver.Chrome(executable_path)
browser.get(site)
WebDriverWait(browser,10).until(EC.frame_to_be_available_and_switch_to_it((By.ID,"ms-bond-detail-iframe")))    
print(browser.find_element_by_xpath('//*[@id="msqt_summary"]/div[2]/table/tbody/tr[1]/td[2]/span[@class="gr_text1"]').text)

要从iframe中出来,需要使用。

browser.switch_to.default_content()
 类似资料:
  • 我试图通过xpath获取一个输入元素,但是return语句是false。 当我试图获取标签(它是输入的唯一兄弟)时,它返回true。我也尝试通过输入类型[@type=“checkbox”]获取它,但也失败了。 null

  • 我会收到以下错误消息: el=self.driver.find_element_by_xpath(element_query)文件“/usr/local/lib/python3.7/site-packages/selenium/webdriver/remote/webdriver.py”,第393行,在find_element_by_xpath中返回self.find_element(by=by.

  • 请帮助我,我正在尝试选择一个图片,这是一个链接(一个网站上的培训师) 这是我的代码:

  • 我需要在HTML中找到此元素 我就是这样做的 使用XPATH,由Chrome控制台生成: 使用XPATH,它正在寻找某种正则表达式: 最后使用XPATH,它通过页面精确到我的元素 他们都没有工作。All给出了一个例外 硒。常见的例外情况。InvalidSelectorException:Message:u'由于以下错误,给定的选择器无法找到具有xpath表达式的元素:\n语法错误:表达式不是合法表

  • 我正在努力编写代码检查下载是由selenium和chrome驱动程序完成的。我的想法是 1.转到下载页面(“Chrome://下载/”) 然后尝试单击developer工具中的Ctrl+F,再次粘贴xpath。我找不到元素。为什么?检查没有框架。

  • 问题内容: 以下是使用Java的WebDriver代码段: 执行代码后,出现以下异常: 线程“主”中的异常org.openqa.selenium.NoSuchElementException:无法找到元素:{“方法”:“ xpath”,“选择器”:” // html / body / div [2] / span / center / form / table / tbody / tr / td