Selenium .get_attribute() 返回 None

Selenium .get_attribute() is returning None

我的目标网站是 https://bscscan.com/address/0xb66e947f49b6811a8bf438040d1582232d3232d7#tokentxns
this text appears when you hover the mouse over time info
我正在尝试获取 here (age) when you hover the mouse it appears, therefore I need to get the 'title data-original-title' attribute because it has the date can be seen here 中最后一笔交易的确切日期,但是当我尝试使用此代码获取日期时,它会打印 None

data = driver.find_element_by_xpath('//*[@id="body"]/div[3]/table/tbody/tr[1]/td[3]/span').get_attribute('title data-original-title')
print(data)
    driver_path = "browser/chromedriver.exe"
    partial_website_link = "b66e947f49b6811a8bf438040d1582232d3232d7"
    final_website_link = f"https://bscscan.com/address/0x{partial_website_link}#tokentxns"
    driver = webdriver.Chrome(driver_path)
    driver.get(final_website_link)
    time.sleep(3)
    frame = driver.find_element_by_xpath('//*[@id="tokenpageiframe"]')
    driver.switch_to.frame(frame)
    
    data = driver.find_element_by_xpath('//*[@id="body"]/div[3]/table/tbody/tr[1]/td[3]/span').get_attribute('title data-original-title')
    print(data)

经过几次尝试并扩展了您的问题,我提出了以下工作示例:

from selenium import webdriver

driver_path = "browser/chromedriver.exe"
driver = webdriver.Chrome(driver_path)

partial_website_link = "b66e947f49b6811a8bf438040d1582232d3232d7"
final_website_link = f"https://bscscan.com/address/0x{partial_website_link}#tokentxns"

driver.get(final_website_link)
frame = driver.find_element_by_xpath('//*[@id="tokenpageiframe"]')
driver.switch_to.frame(frame)
# For some reason the Info you want to print is in the attribute title
data = driver.find_element_by_xpath("""/html/body/div[3]/table/tbody/tr[1]/td[3]/span""").get_attribute('title')

print(data)

如果您想从第一页获取所有日期,请执行以下操作:

from selenium import webdriver

driver_path = "browser/chromedriver.exe"
driver = webdriver.Chrome(driver_path)

partial_website_link = "b66e947f49b6811a8bf438040d1582232d3232d7"
final_website_link = f"https://bscscan.com/address/0x{partial_website_link}#tokentxns"

driver.get(final_website_link)
frame = driver.find_element_by_xpath('//*[@id="tokenpageiframe"]')
driver.switch_to.frame(frame)
# The star in the Xpath is a wildcard, Note the find_elements_by_xpath instead of find_element_by_xpath
dates = driver.find_elements_by_xpath("""//*[@id="body"]/div[3]/table/tbody/tr[*]/td[3]/span""")
# Iterate over every found element
for date in dates:
    print(date.get_attribute('title'))

试试这个:

from selenium.webdriver.support import expected_conditions as EC
from selenium.webdriver.support.ui import WebDriverWait as wait
from selenium.webdriver.common.action_chains import ActionChains


driver_path = "browser/chromedriver.exe"
partial_website_link = "b66e947f49b6811a8bf438040d1582232d3232d7"
final_website_link = f"https://bscscan.com/address/0x{partial_website_link}#tokentxns"
driver = webdriver.Chrome(driver_path)
driver.get(final_website_link)

wait(driver, 10).until(EC.frame_to_be_available_and_switch_to_it(driver.find_element_by_xpath('//*[@id="tokenpageiframe"]')))
time.sleep(1)
ages = driver.find_elements_by_xpath(`//div[@class="table-responsive" and not(@style)]//td[@class="showAge "]//span`)
latest_age = ages[0].get_attribute("title data-original-title")

hover = ActionChains(driver).move_to_element(latest_age)
hover.perform()

tool_tip = driver.find_element_by_xpath('//div[@class="tooltip-inner"]')
age = tool_tip.text
print(age)

看看这是否有效:-

tableRows = driver.find_elements_by_xpath(".//table[@class='table table-hover']/tbody/tr")
for tr in tableRows:
    print(tr.find_element_by_xpath(".//td[@class='showAge ']/span[@rel='tooltip']").get_attribute("data-original-title"))