无效参数:“使用”必须是在 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% 无效的巨坑