python - 如何使用 Python 优化 Selenium 中的代码评估
问题描述
我想提取位于类 SOME_CLASS_NAME
中的跨度文本。该类 可能 SOME_CLASS_NAME
并不总是可用。此外,如果该类确实存在,则需要一些时间才能正确显示。
为了解决这个问题,提出了以下代码。
肮脏的解决方法来检查类是否可用
size_len = WebDriverWait(self.browser, 20).until(EC.presence_of_element_located(
(By.XPATH, './/span[@class = "SOME_CLASS_NAME"]')))
或者
if len( self.browser.find_elements_by_xpath('.//span[@class = "SOME_CLASS_NAME"]') ) > 0 :
element =self.browser.find_elements_by_xpath( './/span[@class = "SOME_CLASS_NAME"]' )[ 0 ].text
else:
element = '0'
虽然上述方法有效,但是,我发现评估类 3 次非常低效。
请问有没有办法让上面的代码更有效率?
解决方案
使用 try..except 块并使用visibility_of_element_located
() 代替presence_of_element_located
()
try:
print(WebDriverWait(self.browser, 10).until(EC.visibility_of_element_located((By.XPATH, './/span[@class = "SOME_CLASS_NAME"]'))).text)
except:
print("element no available")
推荐阅读
- azure - Azure AKS 主节点体系结构
- http - HTTP OPTIONS 方法响应
- java - 表单的 Spring Boot 日期转换
- facebook - 设置 facebook 应用程序时 webhook 未收到 webhook 事件
- c# - 从报告中删除排序字段
- django - 使用动态休息过滤日期范围
- python - Python 正则表达式 - 停止在 > 20 个字符的行
- android - 如何根据 Ionic 3 中的用户输入在 JSON 数组中选择一个对象?
- java - 在 JSPX ADF 中播放媒体?
- asp.net-identity - IdentityUser 连接到 CreatedBy 和 ChangedBy