我一直试图点击一个显然找不到的按钮。
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 中,所以我试图改变框架,但即使这样它也不起作用。 还有其他解决办法吗?
感谢您的帮助