<p>由于所需元素位于<code><iframe></code>内,因此要调用所需元素的<code>src</code>属性,必须:</p>
<ul>
<li>诱导<em>WebDriverWait</em>使所需的<em>帧可用,并切换到它</em></李>
<li>为所需的<code>visibility_of_element_located()</code>诱导<em>WebDriverWait</em></李>
<li><p>您可以使用以下<a href="https://stackoverflow.com/questions/48369043/official-locator-strategies-for-the-webdriver/48376890#48376890">Locator Strategies</a>:</p>
<pre><code>driver = webdriver.Firefox(executable_path=r'C:\Utility\BrowserDrivers\geckodriver.exe')
driver.get('http://www.festo.com/cat/it_it/products_VUVG_S?CurrentPartNo=8043720')
WebDriverWait(driver, 20).until(EC.frame_to_be_available_and_switch_to_it((By.XPATH,"//iframe[@id='CamosIFId' and @name='CamosIF']")))
print(WebDriverWait(driver, 20).until(EC.visibility_of_element_located((By.XPATH, "//img[@id='of132']"))).get_attribute("src"))
</code></pre></li>
<li><p>然而,正如@google提到的一条评论所述,使用<em>ChromeDriver</em>/<em>Chrome</em>浏览体验似乎更好,您可以使用以下解决方案:</p>
<pre><code>options = webdriver.ChromeOptions()
options.add_argument("start-maximized")
options.add_experimental_option("excludeSwitches", ["enable-automation"])
options.add_experimental_option('useAutomationExtension', False)
driver = webdriver.Chrome(options=options, executable_path=r'C:\Utility\BrowserDrivers\chromedriver.exe')
driver.get('http://www.festo.com/cat/it_it/products_VUVG_S?CurrentPartNo=8043720')
WWebDriverWait(driver, 20).until(EC.frame_to_be_available_and_switch_to_it((By.CSS_SELECTOR,"iframe#CamosIFId[name='CamosIF']")))
print(WebDriverWait(driver, 20).until(EC.visibility_of_element_located((By.CSS_SELECTOR, "img#of132"))).get_attribute("src"))
</code></pre></li>
<li><p><strong>注意</strong>:您必须添加以下导入:</p>
<pre><code>from selenium import webdriver
from selenium.webdriver.support.ui import WebDriverWait
from selenium.webdriver.common.by import By
from selenium.webdriver.support import expected_conditions as EC
</code></pre></li>
<li><p>控制台输出:</p>
<pre><code>https://www.festo.com/cfp/camosHtml/i?SIG=0020e295a546f45d9acb6844231fd8ff31ca817a_64_64.png
</code></pre></li>
</ul>
<blockquote>
<p>Here you can find a relevant discussion on <a href="https://stackoverflow.com/questions/53203417/ways-to-deal-with-document-under-iframe">Ways to deal with #document under iframe</a></p>
</blockquote>