【问题标题】:Automate Dropdown Menu in Selenium Without Select在没有选择的情况下自动化 Selenium 中的下拉菜单
【发布时间】:2018-12-12 02:02:07
【问题描述】:

我正在尝试使用 Selenium 从下拉列表中选择一个元素。我已经能够选择下拉列表,但我不知道如何从下拉列表中选择特定元素,因为网站不使用 select,因此我不能使用内置的 select 类。作为参考,这是下拉列表中元素之一的 HTML。

<div class="Di ljb1sb hIqB1e LMgvRb" jsname="wQNmvb" jsaction="" data-value="118237948356370773614" aria-selected="true" role="option" tabindex="0"> <div class="qm he" jsname="ksKsZd" style="top: 23px; left: 75px; width: 188px; height: 188px;"></div> <content class="u5 jh">BlainSupply</content> </div>

这是整个下拉列表的 HTML

<div role="listbox" aria-expanded="false" class="Ej BtzVgc" jscontroller="YwHGTd" jsaction="click:cOuCgd(LgbsSe); keydown:I481le; keypress:Kr2w4b; mousedown:UX7yZ(LgbsSe),npT2md(preventDefault=true); mouseup:lbsD7e(LgbsSe); mouseleave:JywGue; touchstart:p6p2H(LgbsSe); touchmove:FwuNnf; touchend:yfqBxc(LgbsSe|preventMouseEvents=true|preventDefault=true); touchcancel:JMtRjd(LgbsSe); focus:AHmuwe; blur:O22p3e;b5SvAb:TvD9Pc;" jsshadow="" data-max-rows="10"><div jsname="LgbsSe" role="presentation">
  <div class="EI" jsname="d9BH4c" role="presentation">
    <div class="Di ljb1sb hIqB1e LMgvRb bf" jsname="wQNmvb" jsaction="" data-value="118237948356370773614" aria-selected="true" tabindex="0" role="option">
       <div class="qm he" jsname="ksKsZd" style="top: 27px; left: 92px; width: 197px; height: 197px;"></div>
       <content class="u5 jh">BlainSupply</content>
    </div>
    <div class="Di ljb1sb hIqB1e LMgvRb" jsname="wQNmvb" jsaction="" data-value="118324169618367399437" aria-selected="false" tabindex="-1" role="option">
        <div class="qm he" jsname="ksKsZd"></div>
        <content class="u5 jh">GPlusPages02</content>
    </div>
    <div class="Di ljb1sb hIqB1e LMgvRb" jsname="wQNmvb" jsaction="" data-value="101010111938653639529" aria-selected="false" tabindex="-1" role="option">
        <div class="qm he" jsname="ksKsZd"></div>
        <content class="u5 jh">GSitemap2</content>
    </div>
  </div>
  <div class="v5 VtTjbf eU809d" role="presentation"></div></div>

任何帮助将不胜感激!

【问题讨论】:

    标签: html css python-3.x selenium


    【解决方案1】:

    你可以试试这个:

    from selenium.webdriver.support import expected_conditions as EC
    
    element = WebDriverWait(driver, 20).until(EC.element_to_be_clickable((By.XPATH, "//content[contains(., 'BlainSupply')]")))
    element.click()
    

    你可以试试这个xPath:

    //content[contains(., 'BlainSupply')]/parent::div
    

    因为我不确定content 标签是否可点击

    【讨论】:

    • 这可以获取正确的元素,但由于某种原因它不允许我单击它。控制台给了我一个 selenium.common.exceptions.ElementNotVisibleException: Message: element not visible 错误。你知道为什么会这样吗?
    • 尝试在浏览器的 devtools 中检查我的 xpath,是否找到一个元素和正确的元素
    • 检查你的页面是否有iframe,如果有,检查元素是否在iframe
    猜你喜欢
    • 1970-01-01
    • 2022-01-06
    • 1970-01-01
    • 2023-03-25
    • 1970-01-01
    • 2022-11-11
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多