<p>1在发送了一定数量的自动请求后,站点开始阻止这些请求。我添加了一个关于如何避免机器人检测的选项。在这方面寻找类似的问题</p>
<p>2您可以等待警报并检查其中的文本</p>
<p>3不要使用时间。睡眠,使用隐式/显式等待
第2点和第3点是代码中的主要问题</p>
<pre><code>from selenium import webdriver
from selenium.webdriver.support.ui import WebDriverWait
from selenium.webdriver.chrome.options import Options
from selenium.webdriver.support import expected_conditions as EC
options = Options()
# Try adding user agent to avoid bot detection
# options.add_argument('user-agent=')
driver = webdriver.Chrome(chrome_options=options, executable_path='/snap/bin/chromium.chromedriver')
driver.get('https://www.bccard.com/app/merchant/Login.do')
driver.implicitly_wait(10)
wait = WebDriverWait(driver, 10)
wait.until(EC.alert_is_present())
alert = driver.switch_to.alert
assert "INISAFE CrossWebEX" in alert.text
alert.dismiss()
driver.find_element_by_css_selector('li>#userid').send_keys('id')
driver.find_element_by_css_selector('span>#passwd').send_keys('pw')
time.sleep(7) # just to make sure that the values was entered.
</code></pre>
<p><strong>更新和解决方案</strong></p>
<p>我发现,经过多次尝试后,您开始使用虚拟键盘。因此,您可以使用Javascript绕过它:</p>
<pre><code>field = driver.find_element_by_css_selector('span>#passwd')
driver.execute_script(f"arguments[0].value='pw'", field)
</code></pre>
<p>而不是</p>
<pre><code>driver.find_element_by_css_selector('span>#passwd').send_keys('pw')
</code></pre>