在调用click操作后如果继续发生查询操作,此时代码中若进行查询操作可能会对空页面查询,会抛出异常,应等到元素出现后再继续进行操作。
解决办法:设置implicitly_wait(x), x为最大等待时长,该方法会每隔0.5秒查询目标元素是否存在,是则退出。
代码:
from selenium import webdriver
from selenium.webdriver.common.by import By
import time
if __name__ == '__main__':
wd = webdriver.Chrome()
# 每隔0.5秒寻找该元素,直到该元素被找到,若超出最大等待时间,则抛出异常
wd.implicitly_wait(10) # 10指定最大等待时长,后续的定位操作都会按这个最大时长来进行
wd.get('https://www.byhy.net/_files/stock1.html')
element = wd.find_element(By.ID, "kw")
element.send_keys("通讯")
element = wd.find_element(By.ID, "go")
element.click()
"""此时需要等待之前查询结束,元素出现后才能继续进行查找工作"""
try:
element = wd.find_element(By.CLASS_NAME, "name") # 此时进行查询页面处于空白
print(element.text)
except Exception:
print("没有查询到")
input()