python - 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”(可能做错了),但我一直在寻找几个小时,但没有找到任何答案。任何帮助,将不胜感激。
解决方案
Class name
forinput
和标签中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")))
推荐阅读
- javascript - 处理 HTML,更新然后保存在 Ghost 中
- c++ - __FILE__ 仅返回 Apple 的 clang 中的文件名
- c# - 去掉圆圈中间的点
- oracle - where 子句中的 CASE 语句中的 IN 运算符
- python - 用公式填充列而不删除标题
- c# - 具有纯色填充颜色的 C# EPPlus 数据栏条件格式
- c++ - MySQL 删除 JSON 字符串中的转义字符
- python - Python 正则表达式在文本的前面和后面找到多个换行符“\n”
- html - 嵌入启用了自动播放和全屏功能的 YouTube 视频
- python - 如何在 Python 中编写随机投票生成器