Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

有方法可以判断element不存在吗? Element()初始化会报index out of range #39

Open
Joeylu-master opened this issue Sep 29, 2022 · 3 comments

Comments

@Joeylu-master
Copy link

`

    # 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

@Joeylu-master
Copy link
Author

Joeylu-master commented Oct 9, 2022

建议改成:
@defnngj

elem = Browser.driver.find_elements(By.NAME, value)[self.index] if Browser.driver.find_elements(By.ID, value) else None

@licoba
Copy link

licoba commented Nov 17, 2022

有一样的问题

defnngj added a commit that referenced this issue Mar 7, 2023
@ryanrain2016
Copy link

建议改成: @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

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
None yet
Projects
None yet
Development

No branches or pull requests

3 participants