使用Python Selenium点击Aternos服务器Start按钮无效问题
解决Aternos服务器Start按钮点击无效问题
元素未完全加载就点击
很多时候页面元素还没完全可交互,直接调用click会触发无效。改用显式等待,等按钮真正能点击了再操作:from selenium.webdriver.support.ui import WebDriverWait from selenium.webdriver.support import expected_conditions as EC # 最多等10秒,直到Start按钮可点击 start_btn = WebDriverWait(driver, 10).until( EC.element_to_be_clickable((By.ID, 'start')) ) # 同样等待状态文本加载完成 status = WebDriverWait(driver, 10).until( EC.presence_of_element_located((By.CLASS_NAME, 'statuslabel-label')) ).text if status == 'Offline': start_btn.click() print('Starting server!')按钮被遮挡或不在可视区域
如果按钮在页面下方,或者被其他元素覆盖,先滚动到按钮位置再点击:# 滚动到按钮可见位置 driver.execute_script("arguments[0].scrollIntoView();", start_btn) start_btn.click()Aternos反爬机制拦截
Aternos能识别Selenium的自动化特征,试试禁用自动化标识,或者模拟鼠标移动后点击:
禁用自动化标识:from selenium.webdriver.chrome.options import Options options = Options() options.add_experimental_option("excludeSwitches", ["enable-automation"]) options.add_experimental_option('useAutomationExtension', False) driver = webdriver.Chrome(options=options)模拟人类鼠标操作:
from selenium.webdriver.common.action_chains import ActionChains action = ActionChains(driver) action.move_to_element(start_btn).click().perform()点击后需处理确认弹窗
部分场景下点击Start会弹出确认窗口,得切换到弹窗并确认:start_btn.click() # 等待弹窗出现并接受 WebDriverWait(driver, 5).until(EC.alert_is_present()) driver.switch_to.alert.accept()
内容的提问来源于stack exchange,提问作者tonster55
相关产品推荐
相关产品推荐

