Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/367.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
Javascript 无法通过xpath找到元素(JS激活的网站)_Javascript_Html_Python 3.x_Selenium_Xpath - Fatal编程技术网

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

Javascript 无法通过xpath找到元素(JS激活的网站),javascript,html,python-3.x,selenium,xpath,Javascript,Html,Python 3.x,Selenium,Xpath,我正在尝试创建一个使用Javascript的网站。我在Selenium中研究了xpath的类似问题,但这些问题并没有真正起到帮助作用。 我尝试使用请求,但Javascript没有完全加载,所以我使用Selenium chrome驱动程序 我尝试了完整的xpath、xpath和类名,但无法获取元素。下面是我的代码和html site = 'https://finra-markets.morningstar.com/BondCenter/BondDetail.jsp?ticker=C614515&a

我正在尝试创建一个使用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"]')


邦德晨星
window.onerror=函数(msg){$(“body”).attr(“JSError”,msg);}
库希普
075896AB6

元素位于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()

这不是
/*[@id=“msqt\u summary”]
下的
/div[2]
(第二个div)-非常确定您想要
/div[1]
此外,您应该考虑使用ChroPath之类的工具来帮助选择程序。
browser.switch_to.default_content()