poium
poium copied to clipboard
有方法可以判断element不存在吗? Element()初始化会报index out of range
`
# selenium
if by == "id_":
self.__find_element((By.ID, value))
elem = Browser.driver.find_elements(By.ID, value)[self.index]
elif by == "name":
self.__find_element((By.NAME, value))
elem = Browser.driver.find_elements(By.NAME, value)[self.index]
elif by == "class_name":
self.__find_element((By.CLASS_NAME, value))
elem = Browser.driver.find_elements(By.CLASS_NAME, value)[self.index]
elif by == "tag":
self.__find_element((By.TAG_NAME, value))
elem = Browser.driver.find_elements(By.TAG_NAME, value)[self.index]
elif by == "link_text":
self.__find_element((By.LINK_TEXT, value))
elem = Browser.driver.find_elements(By.LINK_TEXT, value)[self.index]
elif by == "partial_link_text":
self.__find_element((By.PARTIAL_LINK_TEXT, value))
elem = Browser.driver.find_elements(By.PARTIAL_LINK_TEXT, value)[self.index]
elif by == "xpath":
self.__find_element((By.XPATH, value))
elem = Browser.driver.find_elements(By.XPATH, value)[self.index]
elif by == "css":
self.__find_element((By.CSS_SELECTOR, value))
elem = Browser.driver.find_elements(By.CSS_SELECTOR, value)[self.index]
`
__get_element 方法如果find_elements是[], 会发生index out of range
建议改成: @defnngj
elem = Browser.driver.find_elements(By.NAME, value)[self.index] if Browser.driver.find_elements(By.ID, value) else None
有一样的问题
建议改成: @defnngj
elem = Browser.driver.find_elements(By.NAME, value)[self.index] if Browser.driver.find_elements(By.ID, value) else None
你这是要执行两边find_elements? 那句应该改成elem = Browser.driver.find_elements(By.NAME, value),然后在最后加一句 elem = elem and elem[0] or None