<p>你需要注意几件事:</p>
<ul>
<li>当点击确认弹出窗口时,你不应该把重点放在处理<code>NoSuchElementException</code></li>
<li>历史上,在大多数情况下,<em>确认弹出窗口</em>驻留在<em>模态对话框</em>中,因此需要归纳<em>WebDriverwait</em></李>
</ul>
<p>相关的HTML可以帮助我们更好地分析这个问题。但是,根据上述要点,您需要将<a href="https://seleniumhq.github.io/selenium/docs/api/py/webdriver_support/selenium.webdriver.support.wait.html#module-selenium.webdriver.support.wait" rel="nofollow noreferrer">WebDriverWait</a>for <a href="https://seleniumhq.github.io/selenium/docs/api/py/webdriver_support/selenium.webdriver.support.expected_conditions.html#module-selenium.webdriver.support.expected_conditions" rel="nofollow noreferrer">expected_conditions</a>归纳为<a href="https://selenium.dev/selenium/docs/api/py/webdriver_support/selenium.webdriver.support.expected_conditions.html#selenium.webdriver.support.expected_conditions.element_to_be_clickable" rel="nofollow noreferrer">^{<cd2>}</a>,并且您可以使用以下<a href="https://stackoverflow.com/questions/48369043/official-locator-strategies-for-the-webdriver/48376890#48376890">Locator Strategies</a>之一:</p>
<ul>
<li><p>使用<code>CSS_SELECTOR</code>:</p>
<pre><code>try:
WebDriverWait(driver, 20).until(EC.element_to_be_clickable((By.CSS_SELECTOR, "#msgButtonAffirm"))).click()
print ("Pop-up was clickable and clicked")
except TimeoutException:
print ("Pop-up was not clickable")
</code></pre></li>
<li><p>使用<code>XPATH</code>:</p>
<pre><code>try:
WebDriverWait(driver, 20).until(EC.element_to_be_clickable((By.XPATH, "//*[@id='msgButtonAffirm']"))).click()
print ("Pop-up was clickable and clicked")
except TimeoutException:
print ("Pop-up was not clickable")
</code></pre></li>
<li><p><strong>注意</strong>:必须添加以下导入:</p>
<pre><code>from selenium import webdriver
from selenium.common.exceptions import TimeoutException
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>
</ul>