python - 元素试图在它出现之前被找到
问题描述
我正在做一个项目,该项目需要获取与类名匹配的多个元素并遍历它们以从每个元素中获取文本并将其打印到屏幕上,问题是代码再次重复并得到最后一个问题,直到我杀死我查看了代码并注意到我尝试使用的元素始终是可点击的,因此我删除了该代码并决定尝试捕获与最后一个文本相关的文本,即 FINISH 我查看并找到了 ID 和构建了下面的代码,但是,问题是它试图在到达最后一个问题之前找到元素,还附加了一个可能的解决方案
#!/usr/bin/python
from selenium import webdriver
from selenium.webdriver.common.keys import Keys
Firefox = webdriver.Firefox()
Firefox.get('ThisIsAExampleWebsite.com')
# Not the actual website
# Website isn't included since it's a local business
Username =
Firefox.find_element_by_id('Username_Login').send_keys('Test')
Password =
Firefox.find_element_by_id('Password_Login').send_keys('Test')
# Not actual username/password
Article = Firefox.find_element_by_id('Article').click()
Get_Text = Firefox.find_element_by_id('Article_Text').click()
while True:
Article_Texts = Firefox.find_elements_by_id('All_Text')
for Text in Article_Texts:
print(Article_Texts.text)
try:
Finish = Firefox.find_element_by_id('Finish')
print(' Done ' )
break
except:
print(' Not Done ' )
continue
编辑:如果我在此类名称上使用 find_elements 并使用下面的 len() 代码获取大小,我已经考虑使用文章每个部分的元素将 while 循环替换为 for 循环
Length_Text = len(Firefox.find_elements_by_class_name('NextText'))
for I in range(0, Length_Text):
Article_Text = Firefox.find_elements_by_id('All_Text')
for Text in Article_Text:
print(Text.text)
这背后的想法是,如果我只循环代码以获取下一个文本的数量,那么它不会循环最后一个文本,但是这段代码仍然会循环它,知道为什么吗?
解决方案
据我了解,您不希望使用 class 的最后一个元素的文本'NextText'
。如我错了请纠正我。你可以做减法len() by 1
。
Length_Text = len(Firefox.find_elements_by_class_name('NextText'))
for I in range(0, Length_Text-1):
Article_Text = Firefox.find_elements_by_id('All_Text')
for Text in Article_Text:
print(Text.text)
推荐阅读
- angular - 从数据库延迟加载 Angular 组件
- jquery - 如何将语法 .live() 转换为 .on() - jquery
- python - 使用 psycopg2 与 postgresql 的连接可以保持 24 小时以上吗?
- database - 如何在 Sequelize 查询中使用不包含
- nix - 查询一个nix程序的“name”属性
- conditional-statements - 在代码复杂性中使用 if else 和 if else if else(深度条件)有什么区别?
- html - SCSS Mixin 无法编译
- python - 如何在熊猫中查找某些列变量的行
- javascript - 允许在页面加载时播放音频
- python - 将输出写入不同的 csv 文件列