排查问题思路
1.确定能定位到元素
2.判断元素是否可以点击
#判断元素是否可以点击 #利用显示等待 from selenium import webdriver from selenium.webdriver.common.by import By from selenium.webdriver.support.ui import WebDriverWait from selenium.webdriver.support import expected_conditions as EC driver = webdriver.Chrome() driver.get("http://somedomain/url_that_delays_loading") #判断元素是否可以点击 def isclickable(xpath): try: WebDriverWait(driver, 10).until( EC.element_to_be_clickable((By.XPATH, xpath))) return True except : return False
结果返回是false
解决办法:
改变定位的元素。报错时定位的是svg元素,改为定位button元素后不报错。
例:
# 测试label/span/input哪个可以点击 begin ######################################################
# try:
# xpath.find_element(By.XPATH, './../../../../td[1]/label/span/input').click() # 点击失败
# except:
# print('false: ./../../../../td[1]/label/span/input')
# try:
# xpath.find_element(By.XPATH, './../../../../td[1]/label/span').click() #点击成功
# except:
# print('false: ./../../../../td[1]/label/span')
# try:
# xpath.find_element(By.XPATH, './../../../../td[1]/label').click()
# except:
# print('false: ./../../../../td[1]/label')
# 测试label/span/input哪个可以点击 end ######################################################