【问题标题】:Selenium - Python - Select dropdown meun option - No ID or NameSelenium - Python - 选择下拉菜单选项 - 无 ID 或名称
【发布时间】:2016-01-10 21:23:13
【问题描述】:

我正在尝试在下拉菜单中选择和元素:

HTML 是:

<div class="col-lg-6">
       <select data-bind="options: indicator_type_list,value: indicatorType,optionsCaption: 'Choose...', disable: $root.mode().isReadOnly()">
        <option value="">Choose...</option>
        <option value="Malicious E-mail">Malicious E-mail</option>
        <option value="IP Watchlist">IP Watchlist</option>
        <option value="File Hash Watchlist">File Hash Watchlist</option>
        <option value="Domain Watchlist">Domain Watchlist</option>
        <option value="URL Watchlist">URL Watchlist</option>
        <option value="Malware Artifacts">Malware Artifacts</option>
        <option value="C2">C2</option>
        <option value="Anonymization">Anonymization</option>
        <option value="Exfiltration">Exfiltration</option>
        <option value="Host Characteristics">Host Characteristics</option>
        <option value="Compromised PKI Certificate">Compromised PKI Certificate</option>
        <option value="Login Name">Login Name</option>
        <option value="IMEI Watchlist">IMEI Watchlist</option>
        <option value="IMSI Watchlist">IMSI Watchlist</option>
       </select>
</div>

我试过了:

Select = Select(browser.find_element_by_xpath("//div[contains(.,'Choose...Malicious E-mailIP WatchlistFile Hash WatchlistDomain WatchlistURL WatchlistMalware ArtifactsC2AnonymizationExfiltrationHost CharacteristicsCompromised PKI CertificateLogin NameIMEI WatchlistIMSI Watchlist')]"))

test = browser.find_element_by_xpath("//option[@value='Malicious E-mail']") 
dropdown = test.find_element_by_xpath('..')
select = Select(browser.dropdown)

但是我似乎无法在下拉列表中找到用于选择项目的元素。

感谢任何帮助!

【问题讨论】:

    标签: python selenium drop-down-menu


    【解决方案1】:

    有多种方法可以定位此select 元素。

    这是一种方法 - 找到内部具有特定 optionselect 元素:

    from selenium.webdriver.support.select import Select
    
    option_value = "Malicious E-mail"
    
    select_element = browser.find_element_by_xpath("//select[option[@value = '%s']]" % option_value)
    select = Select(select_element)
    select.select_by_value(option_value)
    

    【讨论】:

    • 嗨@alecxe!我已经使用你上面的代码来解决同样的问题,但它不起作用。这是我的代码的链接。你能帮我解决这个问题吗?谢谢! stackoverflow.com/questions/49362476/…
    【解决方案2】:

    你可以通过给select标签添加web元素来使用Select

    select = Select(browser.find_element_by_css_selector(".col-lg-6 > select")) #finds the select tag
    select.select_by_value("Malicious E-mail")
    #or
    select.select_by_visible_text("Malicious E-mail")
    

    【讨论】:

    • @alecxe 它是一个很好的定位器,但Select 需要选择标签。
    • 我不反对。只是指出col-lg-6 是一个来自引导程序的面向“布局”的类。一般不建议依赖面向布局的类或其他属性。谢谢。
    • 最初,家伙的反应就足够了,直到我不得不处理另一个具有相同 Div id 的下拉菜单。我尝试了alecxe的答案,它适用于两种情况。我从两个答案中都学到了一些东西,所以感谢您的帮助。
    猜你喜欢
    • 2018-02-17
    • 2017-03-23
    • 1970-01-01
    • 2023-03-25
    • 2022-11-11
    • 1970-01-01
    • 1970-01-01
    • 2023-04-01
    • 1970-01-01
    相关资源
    最近更新 更多