无效参数:“使用”必须是在 iframe 中提取图像源的字符串

Posted

技术标签:

【中文标题】无效参数:“使用”必须是在 iframe 中提取图像源的字符串【英文标题】:Invalid argument: 'using' must be a string extracting image source within an iframe 【发布时间】:2022-01-24 00:50:54 【问题描述】:

我是使用 python 和 selenium 的新手,我正在尝试从网站获取图像源。我实际上是通过标签名称查找元素,但我不知道这是否是正确的方法。 无论如何它给了我一个错误:

InvalidArgumentException: Message: invalid argument: 'using' must be a string

下面是我写的代码

from selenium import webdriver
from selenium.webdriver.chrome.service import Service
from selenium.webdriver.common.by import By
from webdriver_manager.chrome import ChromeDriverManager

PATH = Service("/Users/fscozano/documenti/chromedriver-2.exe")

print("setup")
driver = webdriver.Chrome(service=Service(ChromeDriverManager().install()))
driver.get("https://apod.nasa.gov/apod/random_apod.html")

tag = driver.find_element((By.TAG_NAME, "b")).getText()

print(tag)

driver.quit()

错误在:

tag = driver.find_element((By.TAG_NAME, "b")).getText()

您可以亲自检查网站,因为我真的不知道如何解决这个问题 每种类型的帮助都值得赞赏:)

【问题讨论】:

.getText() 是你想要的 Java .text for Python。 【参考方案1】:

图像源位于<iframe> 内,因此您必须:

诱导WebDriverWait 使所需的帧可用并切换到它

诱导WebDriverWait 使所需的元素可点击

您可以使用以下Locator Strategies:

driver.get("https://apod.nasa.gov/apod/random_apod.html")
WebDriverWait(driver, 20).until(EC.frame_to_be_available_and_switch_to_it((By.CSS_SELECTOR,"iframe[src^='https://apod.nasa.gov/apod']")))
print(WebDriverWait(driver, 20).until(EC.visibility_of_element_located((By.XPATH, "//h1[normalize-space()='Astronomy Picture of the Day']//following::p[2]//a/img"))).get_attribute("src"))

控制台输出:

https://apod.nasa.gov/apod/image/2111/MACSJ0138_Hubble_1080.jpg

注意:您必须添加以下导入:

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

参考

您可以在以下位置找到一些相关讨论:

Ways to deal with #document under iframe Switch to an iframe through Selenium and python selenium.common.exceptions.NoSuchElementException: Message: no such element: Unable to locate element while trying to click Next button with selenium selenium in python : NoSuchElementException: Message: no such element: Unable to locate element

【讨论】:

以上是关于无效参数:“使用”必须是在 iframe 中提取图像源的字符串的主要内容,如果未能解决你的问题,请参考以下文章

关于 iframe 在ie11 height:100% 无效的巨坑

iframe中css无效

为啥 <iframe> 元素在 HTML 4.01 中无效?

无效参数:维度 -972891 必须 >= 0

当我使用 ffmpeg 从视频中提取音频时,出现错误

“请求中的 URI 无效”尝试代理 iframe 内容以进行本地调试