首页 > 解决方案 > Selenium 无法定位元素

问题描述

我正在使用 selenium 创建一个 kahoot bot flooder。(kahoot.it) 我正在尝试使用 selenium 来定位输入框,以及确认按钮。每当我尝试将它们定义为变量时,我都会得到这个。“命令引发异常:TimeoutException:消息:”,我认为这意味着我设置的5秒已过期,这意味着该元素从未被定位。

    for idr in tabs:
    num+=1
    drv.switch_to.window(idr)
    time.sleep(0.3)
    gameid = WebDriverWait(drv,5).until(EC.presence_of_element_located((By.CLASS_NAME , "sc-bZSQDF bXdUBZ")))
    gamebutton = WebDriverWait(drv,5).until(EC.presence_of_element_located((By.CLASS_NAME , "sc-iqHYGH eMQRbB sc-geEHAE kTTBHH")))
    gameid.send_keys(gamepin)
    gamebutton.click()
    time.sleep(0.8)

    try:
        nick = WebDriverWait(drv,5).until(EC.presence_of_element_located((By.CLASS_NAME , "sc-bZSQDF bXdUBZ")))
        nickbutton = WebDriverWait(drv,5).until(EC.presence_of_element_located((By.CLASS_NAME , "sc-iqHYGH eMQRbB sc-ja-dpGc gYusMa")))
        nick.send_keys(f'{name}{num - 1}')
        nickbutton.click()
    except:

我尝试找到一个不太成功的“Iframe”(可能做错了),但我一直在寻找几个小时,但没有找到任何答案。任何帮助,将不胜感激。

标签: pythonseleniumselenium-webdriver

解决方案


Class nameforinput和标签中button有空格。

对于input标签,您可以使用该name属性。对于button标签,您可以使用它,tag name因为它是 DOM 中唯一的button标签。

gameinput = wait.until(EC.presence_of_element_located((By.NAME,"gameId")))
gameinput.send_keys("Sample Text")
submit = wait.until(EC.presence_of_element_located((By.TAG_NAME,"button")))
submit.click()

#It also worked with below line:
gameinput = wait.until(EC.presence_of_element_located((By.CSS_SELECTOR,".sc-bZSQDF.bXdUBZ")))

推荐阅读