首页 > 解决方案 > TimeoutException:消息:Selenium Python

问题描述

我一直在尝试单击一个显然找不到的按钮。

from selenium import webdriver
from selenium.webdriver.common import by
from selenium.webdriver.common.by import By
from selenium.webdriver.common.keys import Keys
from selenium.webdriver.support.ui import WebDriverWait
from selenium.webdriver.support.ui import Select
from selenium.webdriver.support import expected_conditions as EC, wait
import time
import base

def click(driver, locator):
    WebDriverWait(driver, 10).until(EC.presence_of_element_located(locator)).click()
def sendKeys(driver, locator, value):
    WebDriverWait(driver, 10).until(EC.presence_of_element_located(locator)).clear()
    WebDriverWait(driver, 10).until(EC.presence_of_element_located(locator)).send_keys(value)

# entrar no site
driver = webdriver.Chrome()
driver.get("site")
assert "site" in driver.title

# username
click(driver, (By.NAME, 'j_username'))
time.sleep(2)
sendKeys(driver, (By.NAME, 'j_username'), 'user')

# password
click(driver, (By.NAME, 'j_password'))
#time.sleep(2)
sendKeys(driver, (By.NAME, 'j_password'), 'pass')
#time.sleep(2)
click(driver, (By.NAME, 'submit'))

# simular
time.sleep(2)
click(driver, (By.CLASS_NAME, 'textodestaqueshome'))
print('Passou 1')


# procurar Iframe
WebDriverWait(driver, 10).until(EC.frame_to_be_available_and_switch_to_it((By.ID,"dados"))) 

click(driver, (By.ID, 'listaProdutosProp:form1:objProdutos:11:cmdLnkProd2')) # <--------- 

print('Passou 2')


提供的回溯如下:

  File "C:\Users\Op. Crédito 73\PycharmProjects\RobotSegurosAuto\Caravela.py", line 45, in <module>
    click(driver, (By.ID, 'listaProdutosProp:form1:objProdutos:11:cmdLnkProd2'))
  File "C:\Users\Op. Crédito 73\PycharmProjects\RobotSegurosAuto\Caravela.py", line 12, in click
    WebDriverWait(driver, 10).until(EC.presence_of_element_located(locator)).click()
  File "C:\Users\Op. Crédito 73\PycharmProjects\RobotSegurosAuto\venv\lib\site-packages\selenium\webdriver\support\wait.py", line 80, in until
    raise TimeoutException(message, screen, stacktrace)
selenium.common.exceptions.TimeoutException: Message: 

在开始时我尝试简单地单击(),但之后我认为它在不同的 iframe 中,所以我试图改变框架,但即使那样它也不起作用。还有其他解决方案吗?

谢谢您的帮助

标签: pythonseleniumselenium-webdriver

解决方案


推荐阅读