Python 硒 NoSuchElementException

Python Selenium NoSuchElementException

我有以下代码:

browser.find_element_by_css_selector('#bet').send_keys(2500)
time.sleep(2)
x = 0
while x < 100: 
    browser.find_element_by_css_selector('#start_game').click()
    time.sleep(3)
    browser.find_element_by_css_selector('li.tile:nth-child('+str(random.randint(1, 25))+')').click()
    time.sleep(2)
    browser.find_element_by_css_selector('li.tile:nth-child('+str(random.randint(1, 25))+')').click()
    time.sleep(2)
    browser.find_element_by_css_selector('li.tile:nth-child('+str(random.randint(1, 25))+')').click()
    time.sleep(5)
    try:
        browser.find_element_by_css_selector('.cashout').click()
    except NoSuchElementException:
        browser.find_element_by_css_selector('#start_game').click()
    time.sleep(10)
    x = x+1

好吧,我的代码用比特币玩扫雷游戏。一切都很好,他下注,开始游戏随机点击 3 个框。当他成功点击 3 个盒子并且没有炸弹时,提款按钮出现,但是当脚本点击炸弹时,提款按钮没有出现,我得到 nosuchelement。

我试过使用:

try:
    browser.find_element_by_css_selector('.cashout').click()
except NoSuchElementException:
    browser.find_element_by_css_selector('#start_game').click()

万一他点击了炸弹并且提款似乎没有开始新游戏...但它没有用。有人可以帮助我吗?

您确实需要切换到 Explicit Waits 而不是硬编码睡眠调用。

等待 cashout 元素 可见 ,然后单击:

from selenium.webdriver.common.by import By
from selenium.webdriver.support.ui import WebDriverWait
from selenium.webdriver.support import expected_conditions as EC
from selenium.common.exceptions import TimeoutException

try:
    element = WebDriverWait(browser, 10).until(
        EC.visibility_of_element_located((By.CSS_SELECTOR, ".cashout"))
    )
    element.click()
except TimeoutException:
    browser.find_element_by_css_selector('#start_game').click()