查找用于单击和查找文本的xpath

时间:2019-10-17 10:53:57

标签: python selenium selenium-webdriver

  

错误: NoSuchElementException:没有这样的元素:无法找到元素:{“ method”:“ xpath”,“ selector”:“ // td [@class ='C($ primaryColor)W(51%)']“}     (会话信息:chrome = 77.0.3865.120)

我的代码如下:

from selenium import webdriver

from selenium.webdriver.common.keys import Keys


driver = webdriver.Chrome('/Users/ryanyee/Desktop/Python Code/Selenium/Launch 
Chrome/chromedriver')
driver.get('https://finance.yahoo.com')
search_box = driver.find_element_by_id('yfin-usr-qry')
search_box.send_keys('GOOG')
search_box.submit()

name = driver.find_element_by_xpath("//td[@class='C($primaryColor) W(51%)']").text()

我的问题是,当我尝试刮取名称文本时会抛出错误。

此外,我在尝试单击“历史数据”按钮时遇到了麻烦

这是我要从'https://finance.yahoo.com/quote/GOOG?p=GOOG'抓取的网站

请让我知道我在做什么错!我已经被困了好几天了!

2 个答案:

答案 0 :(得分:1)

尝试在search_box.submit()之后添加等待语句

from selenium.webdriver.support.ui import WebDriverWait

WebDriverWait(driver, 10).until(
    EC.presence_of_element_located(By.XPATH, "//td[@class='C($primaryColor) W(51%)']"))

答案 1 :(得分:0)

提交后需要等待。

search_box.submit()

name = WebDriverWait(driver, 20).until(EC.visibility_of_element_located((By.XPATH, "//td[@class='C($primaryColor) W(51%)']"))).text
print(name)

#this is for click Historical Data
driver.find_element_by_link_text("Historical Data").click()

正在导入:

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