【问题标题】:How to get text element in html head by selenium?如何通过硒获取html头中的文本元素?
【发布时间】:2021-12-16 06:28:25
【问题描述】:

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

当我尝试通过 Firefox 浏览 html 时,它显示 1-002.jpg 位于 部分。由于某种原因,这无法在 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)

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

如果我用 file_name = driver.find_element_by_xpath('/html/head/title').text 替换它,它不会返回任何内容。

所以我问我如何才能得到想要的文本。

谢谢。

【问题讨论】:

    标签: python html selenium firefox


    【解决方案1】:

    首先你必须在 HTMLDOM 中检查我们是否有唯一的条目:

    如果我们在HTML DOM 中有唯一条目,请检查dev tools(谷歌浏览器)。

    检查步骤:

    Press F12 in Chrome -> 转到element 部分 -> 做一个CTRL + F -> 然后粘贴xpath 看看,如果你想要的element 用@ 得到高亮 987654328@匹配节点。

    对于 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
    

    【讨论】:

    • 感谢您的详细解释。该问题与延迟问题无关。我用 file_name = driver.find_element_by_xpath('/html/head/title').get_attribute('innerText') 解决了这个问题
    猜你喜欢
    • 2016-05-18
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2020-04-30
    • 1970-01-01
    • 2017-08-03
    相关资源
    最近更新 更多