python - 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 中,所以我试图改变框架,但即使那样它也不起作用。还有其他解决方案吗?
谢谢您的帮助
解决方案
推荐阅读
- ruby - 无法安装捆绑程序,显示版本太旧
- pyspark - 使用高性能选择操作重命名 PySpark DataFrame 中的列
- python - 增加一个整数并在循环中写入输出 xml
- r - 如何使用 Shiny R 在一页中出现“运行代码”按钮,然后在按下并完成计算时出现一个新页面并显示结果
- php - 如果不存在帖子,则隐藏循环
- curl - 卷曲 POST 请求到 grails 控制器
- android - 如何更改溢出菜单图标的大小
- javascript - 多次触发模糊/焦点事件
- swift - 共享数据库中没有使用 NSPersistentCloudKitContainer 的父记录的子记录
- javascript - 为什么 MediaRecorder 在 Firefox 上显示为空白,但在 Chrome 上却没有?