【问题标题】:How to make a for loop skip a element that can't be found如何使for循环跳过找不到的元素
【发布时间】:2020-10-04 11:48:33
【问题描述】:

我想做的是在组列表中找到一个成员,并且我希望 selenium 单击该元素配置文件,因此我尝试列出应该单击的限制应该是多少但找不到以 member-100000 开头的元素是正确的,因为它们不是任何这样的元素 id,但我希望它点击该页面上的正确元素,我不知道如何使其成为可能,因为在该网站中,成员在整个过程中都发生了变化时间。

我的代码:

driver.get("https://www.roblox.com/groups/650266/Trade#!/about")
driver.maximize_window()
driver.implicitly_wait(3)
driver.find_element_by_class_name('group-dropdown').click()
driver.find_element_by_id("role-3874587").click()
item = [driver.find_element_by_id("member-" + str(q)) for q in range(100000, 10000000000)]
for i in range(0, 1000):
    driver.implicitly_wait(3)
    driver.find_element_by_class_name("avatar-container").click()
for items in item():
    driver.implicitly_wait(5)

错误信息:

selenium.common.exceptions.NoSuchElementException: Message: no such element: Unable to locate element: {"method":"css selector","selector":"[id="member-100000"]"}
  (Session info: chrome=83.0.4103.97)

截图:

以及我希望机器人点击的部分

【问题讨论】:

    标签: python-3.x selenium for-loop selenium-webdriver roblox


    【解决方案1】:

    您可以找到所有头像,例如:

    avatar_links = driver.find_elements_by_class_name('avatar-container')
    

    然后单击它们中的每一个,例如:

    avatar_links[0].click()
    

    或在循环中:

        for avatar in avatar_links:
            avatar.click()
    
    

    但要小心,因为单击头像会将您重定向到没有成员元素的另一个页面,您应该在单击另一个头像之前返回上一页。

    【讨论】:

    • 如何单击组中我想用于该情况的元素。
    • 能否请您澄清一下您想点击哪些元素并描述选择标准?
    • 我要点击“Rich Traders”的群版块
    • 就像我希望它循环该特定组中该部分的人
    • 我运行它时得到的错误也是``` selenium.common.exceptions.StaleElementReferenceException: Message: stale element reference: element is not attach to the page document (Session info: chrome=83.0 .4103.97) ```
    猜你喜欢
    • 2014-01-08
    • 2019-01-01
    • 1970-01-01
    • 2015-07-17
    • 1970-01-01
    • 2012-03-12
    • 2012-03-02
    • 2022-06-30
    • 1970-01-01
    相关资源
    最近更新 更多