【问题标题】:Selenium finding button on discord website不和谐网站上的硒查找按钮
【发布时间】:2021-04-30 16:13:48
【问题描述】:

Screenshot of Website with inspect element

我正在尝试使用“集成”按钮

int = WebDriverWait(driver, 1).until(EC.presence_of_element_located((By.CLASS_NAME, "side-8zPYf6")))
webdriver.ActionChains(driver).click(int).perform()

但它不起作用。

下面是这个面板的html:

<div class="sidebarRegionScroller-3MXcoP thin-1ybCId scrollerBase-289Jih fade-2kXiP2" dir="ltr" style="overflow: hidden scroll; padding-right: 0px;">
   <nav class="sidebar-CFHs9e">
      <div class="side-8zPYf6" role="tabbar" aria-orientation="vertical">
         <div class="header-2RyJ0Y" tabindex="-1" role="button"> </div>
         <div class="item-PXvHYJ themed-OHr7kt" role="tab" aria-selected="false" aria-controls="OVERVIEW-tab" aria-disabled="false" tabindex="-1">Overview</div>
         <div class="item-PXvHYJ themed-OHr7kt" role="tab" aria-selected="false" aria-controls="ROLES-tab" aria-disabled="false" tabindex="-1">Roles</div>
         <div class="item-PXvHYJ themed-OHr7kt" role="tab" aria-selected="false" aria-controls="EMOJI-tab" aria-disabled="false" tabindex="-1">Emoji</div>
         <div class="item-PXvHYJ themed-OHr7kt" role="tab" aria-selected="false" aria-controls="MODERATION-tab" aria-disabled="false" tabindex="-1">Moderation</div>
         <div class="item-PXvHYJ themed-OHr7kt" role="tab" aria-selected="false" aria-controls="AUDIT_LOG-tab" aria-disabled="false" tabindex="-1">Audit Log</div>
         <div class="item-PXvHYJ selected-3s45Ha themed-OHr7kt" role="tab" aria-selected="true" aria-controls="INTEGRATIONS-tab" aria-disabled="false" tabindex="0" aria-label="Integrations">Integrations</div>
         <div class="item-PXvHYJ themed-OHr7kt" role="tab" aria-selected="false" aria-controls="WIDGET-tab" aria-disabled="false" tabindex="-1">Widget</div>
         <div class="item-PXvHYJ themed-OHr7kt" role="tab" aria-selected="false" aria-controls="GUILD_TEMPLATES-tab" aria-disabled="false" tabindex="-1" aria-label="Server Template">Server Template</div>
         <div class="separator-gCa7yv"></div>
         <div class="header-2RyJ0Y" tabindex="-1" role="button">Community</div>
         <div class="item-PXvHYJ themed-OHr7kt" role="tab" aria-selected="false" aria-controls="COMMUNITY-tab" aria-disabled="false" tabindex="-1" aria-label="Overview">Overview</div>
         <div class="item-PXvHYJ themed-OHr7kt" role="tab" aria-selected="false" aria-controls="ANALYTICS-tab" aria-disabled="false" tabindex="-1" aria-label="Server Insights">Server Insights</div>
         <div class="item-PXvHYJ themed-OHr7kt" role="tab" aria-selected="false" aria-controls="PARTNER-tab" aria-disabled="false" tabindex="-1" aria-label="Partner Program">Partner Program</div>
         <div class="item-PXvHYJ themed-OHr7kt" role="tab" aria-selected="false" aria-controls="DISCOVERY-tab" aria-disabled="false" tabindex="-1" aria-label="Enable Discovery">Discovery</div>
         <div class="item-PXvHYJ themed-OHr7kt" role="tab" aria-selected="false" aria-controls="MEMBER_VERIFICATION-tab" aria-disabled="false" tabindex="-1">Membership Screening</div>
         <div class="item-PXvHYJ themed-OHr7kt" role="tab" aria-selected="false" aria-controls="COMMUNITY_WELCOME-tab" aria-disabled="false" tabindex="-1" aria-label="Welcome Screen">Welcome Screen</div>
         <div class="separator-gCa7yv"></div>
         <div class="item-PXvHYJ themed-OHr7kt" role="tab" aria-selected="false" aria-controls="GUILD_PREMIUM-tab" aria-disabled="false" tabindex="-1" style="color: rgb(114, 137, 218);">Server Boost Status</div>
         <div class="separator-gCa7yv"></div>
         <div class="header-2RyJ0Y" tabindex="-1" role="button">User Management</div>
         <div class="item-PXvHYJ themed-OHr7kt" role="tab" aria-selected="false" aria-controls="MEMBERS-tab" aria-disabled="false" tabindex="-1">Members</div>
         <div class="item-PXvHYJ themed-OHr7kt" role="tab" aria-selected="false" aria-controls="INSTANT_INVITES-tab" aria-disabled="false" tabindex="-1">Invites</div>
         <div class="item-PXvHYJ themed-OHr7kt" role="tab" aria-selected="false" aria-controls="BANS-tab" aria-disabled="false" tabindex="-1">Bans</div>
         <div class="separator-gCa7yv"></div>
         <div class="item-PXvHYJ themed-OHr7kt" role="tab" aria-selected="false" aria-controls="DELETE-tab" aria-disabled="false" tabindex="-1" style="color: rgb(240, 71, 71);">Delete Server</div>
      </div>
   </nav>
   <div aria-hidden="true" style="position: absolute; pointer-events: none; min-height: 0px; min-width: 1px; flex: 0 0 auto; height: 0px;"></div>
</div>

【问题讨论】:

    标签: python html selenium selenium-webdriver


    【解决方案1】:

    你看到有类名。 如果它真的很独特,请使用它。

    from selenium.webdriver.common.by import By
    from selenium.webdriver.support.wait import WebDriverWait
    from selenium.webdriver.support import expected_conditions as EC
    
    wait = WebDriverWait(driver, 20)
    wait.until(EC.element_to_be_clickable((By.CSS_SELECTOR, ".item-PXvHYJ.themed-OHr7kt")))
    button = driver.find_element_by_css_selector(".item-PXvHYJ.themed-OHr7kt")
    button.click()
    

    . 放在类名之前。

    更新: 添加此按钮的等待时间。

    更新 2: 由于上述定位器似乎不是唯一的, 使用这个 CSS:

    button = driver.find_element_by_css_selector("div[aria-controls='INTEGRATIONS-tab']")
    

    【讨论】:

    • 可能是动态类名...需要查看网页才能正确定位元素
    • 也许你是对的。但是,我认为它们肯定会是动态的,如果它们最终有一些数字,例如`item-PXvHYJ123`
    • 我写了create_webhook = driver.find_element_by_css_selector(".item-PXvHYJ.themed-OHr7kt") create_webhook.click() 还是不行
    • 我会推荐一个。但是您在 cmets 中提出了不同的问题。下次请发布您的代码和您面临的问题
    • 哦,等一下,我重启后就可以了,非常感谢您的帮助!!
    猜你喜欢
    • 1970-01-01
    • 2018-03-09
    • 2021-10-03
    • 2021-11-18
    • 2020-06-10
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2021-09-06
    相关资源
    最近更新 更多