如何通过selenium获取html head中的文本元素?

How to get text element in html head by selenium?

我正在尝试通过 selenium(Firefox 驱动程序)从此 link 获取 jpg 的文件名。如果我手动右键单击照片并下载它,文件名将是 1-002.jpg

当我尝试通过 Firefox 浏览 html 时,它显示 1-002.jpg 位于 <'head'> <'title'>部分。由于某些原因,无法在 chrome 上显示。

<Head>
 <meta name="viewport" content="width=device-width; height=device-height;">
 <link rel="stylesheet" href="resource://content-accessible/ImageDocument.css">
 <link rel="stylesheet" href="resource://content-accessible/TopLevelImageDocument.css">
 <link rel="stylesheet" href="chrome://global/skin/media/TopLevelImageDocument.css">
 <title>1-002.jpg (JPEG Image, 1800&nbsp;×&nbsp;2546 pixels) — Scaled (40%)</title>
</Head>

但是,我无法获取文本。到目前为止,我的代码如下

driver.get(url)

file_name = driver.find_element_by_xpath('/html/head/title')
print(file_name)

我只能得到<selenium.webdriver.firefox.webelement.FirefoxWebElement (session="384e7def-df66-4f06-9c3a-c5072c2d650f", element="7e0002d0-7bfb-4aed-8558-fdb9c25075d4")>

如果我用 file_name = driver.find_element_by_xpath('/html/head/title').text 替换它,它将 return 什么都没有。

所以我想问一下我怎样才能得到想要的文本。

谢谢。

首先,您必须在 HTMLDOM 中检查我们是否具有唯一条目:

如果我们在 HTML DOM 中有 unique 条目,请检查 dev tools (Google chrome)。

检查步骤:

Press F12 in Chrome -> 转到 element 部分 -> 执行 CTRL + F -> 然后粘贴 xpath 并查看是否需要 element正在 突出显示 1/1 匹配节点。

对于 firefox,请进行检查,步骤应保持不变。

如果 /html/head/title 是 1/1,则问题可能是延迟的原因。

硬编码睡眠(不推荐)

代码试用 1 :

time.sleep(5)
file_name = driver.find_element_by_xpath('/html/head/title').text
print(file_name)

代码试用 2:(推荐)

file_name =  WebDriverWait(driver, 20).until(EC.visibility_of_element_located((By.XPATH, "/html/head/title"))).text
print(file_name)

您可以尝试的其他内容:

请致电.get_attribute('innerText').get_attribute('innerHTML') 而不是 .text,像这样:

innerHTML

file_name =  WebDriverWait(driver, 20).until(EC.visibility_of_element_located((By.XPATH, "/html/head/title"))).get_attribute('innerHTML')
print(file_name)

有innerText

file_name =  WebDriverWait(driver, 20).until(EC.visibility_of_element_located((By.XPATH, "/html/head/title"))).text
print(file_name)get_attribute('innerText')

进口:

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