Warm tip: This article is reproduced from serverfault.com, please click

javascript-不了解驱动程序如何无法找到元素

(javascript - Not understanding how driver unable to locate element)

发布于 2020-11-30 23:31:33

这是网站:https : //seekingalpha.com/news/3580581-docusign-eps-beats-0_02-beats-on-revenue

我正在尝试抓取EPS,EPS差额,GEPS GEPS差额和收入收入差的网页。

List1 = driver.find_element_by_xpath("""/html/body/div[2]/div[1]/div/main/div[2]/div[3]/div[2]/section[1]/div/div/div[3]/div/div/div[1]/ul/li[1]/text()[2]""")

这将返回无法找到元素。

同样这是行不通的

List1 = driver.find_element_by_xpath("""/html/body/div[2]/div[1]/div/main/div[2]/div[3]/div[2]/section[1]/div/div/div[3]""")

我不认为这是由于网站正在加载。我把time.sleep设置为10秒,这也没有用。我不确定如何浏览网站以获取包含所需信息的列表。

Questioner
Ivan Pupo
Viewed
0
DebanjanB 2020-12-02 19:17:31

要打印所需的文本,你必须为引入WebDriverWaitvisibility_of_element_located()并且可以使用以下两种定位策略之一

  • 打印DocuSign(纳斯达克股票代码:DOCU):第一季度非GAAP每股收益为0.12美元,比传统每股收益高出0.02美元;GAAP每股收益-0.26美元,未达到$ 0.03美元。

    driver.get('https://seekingalpha.com/news/3580581-docusign-eps-beats-0_02-beats-on-revenue')
    print(WebDriverWait(driver, 20).until(EC.visibility_of_element_located((By.XPATH, "//div[@data-test-id='content-container']/ul/li"))).text)
    
  • 要打印0.12美元的第一季度非GAAP每股收益,请执行以下操作

    print(driver.execute_script('return arguments[0].childNodes[2].textContent;', WebDriverWait(driver, 20).until(EC.visibility_of_element_located((By.XPATH, "//div[@data-test-id='content-container']/ul/li")))).strip())
    
  • 打印$ 0.02的节拍

    print(driver.execute_script('return arguments[0].childNodes[3].textContent;', WebDriverWait(driver, 20).until(EC.visibility_of_element_located((By.XPATH, "//div[@data-test-id='content-container']/ul/li")))).strip())
    
  • 打印GAAP EPS -0.26美元

    print(driver.execute_script('return arguments[0].childNodes[4].textContent;', WebDriverWait(driver, 20).until(EC.visibility_of_element_located((By.XPATH, "//div[@data-test-id='content-container']/ul/li")))).strip())
    
  • 要按$ 0.03打印未命中

    print(driver.execute_script('return arguments[0].childNodes[5].textContent;', WebDriverWait(driver, 20).until(EC.visibility_of_element_located((By.XPATH, "//div[@data-test-id='content-container']/ul/li")))).strip())
    
  • 注意:你必须添加以下导入:

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