Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/python/355.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/html/80.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
使用Selenium webdriver for Chrome的Python脚本,尝试(但失败)打印列表框中包含的元素_Python_Html_Selenium_Listbox_Chrome Web Driver - Fatal编程技术网

使用Selenium webdriver for Chrome的Python脚本,尝试(但失败)打印列表框中包含的元素

使用Selenium webdriver for Chrome的Python脚本,尝试(但失败)打印列表框中包含的元素,python,html,selenium,listbox,chrome-web-driver,Python,Html,Selenium,Listbox,Chrome Web Driver,我正在运行的脚本如下所示: #import necessary packages from selenium import webdriver from selenium.webdriver.common.by import By from selenium.webdriver.support.ui import WebDriverWait from selenium.webdriver.support import expected_conditio

我正在运行的脚本如下所示:

    #import necessary packages
    from selenium import webdriver


    from selenium.webdriver.common.by import By
    from selenium.webdriver.support.ui import WebDriverWait
    from selenium.webdriver.support import expected_conditions as EC
    from selenium.webdriver.chrome.options import Options

    #run on headless browser
    chrome_options = Options()
    chrome_options.add_argument("--headless")
    driver = webdriver.Chrome(options=chrome_options)
    ####

    #driver = webdriver.Chrome()
    # Open the website
    driver.get('https://euclid.eba.europa.eu/register/pir/search')
    driver.set_window_size(1200, 800)
    driver.maximize_window()

    #find element using the link text
    xpath_institution_search = "//a[@href='/register/pir/search' and contains(text(), 'InstitutionSearch')]"                        
    try:
        element = WebDriverWait(driver, 10).until(
            EC.presence_of_element_located((By.XPATH, xpath_institution_search))
)
    finally: 
        institution_search = driver.find_element_by_xpath(xpath_institution_search)
        driver.execute_script("return arguments[0].scrollIntoView();", institution_search)
        institution_search.click()

    #select all appropriate National Competent Authorities
    xpath_nca_list_new = '(//p-listbox[@class="col-md-9 ng-untouched ng-pristine ng-valid" and @name="ncaList"])'                   
    #find the listbox element using it's xpath
    nca_listbox = driver.find_element_by_xpath(xpath_nca_list_new)
    #find elements within list box using tag names
    nca_div_tags = nca_listbox.find_elements_by_tag_name("div")
    #find element representing "select all" checkbox
    select_all_ncas = nca_div_tags[5]
    #find all list content (National Competent Authorities)
    nca_content_list = nca_div_tags[0].find_elements_by_tag_name("ul")
    #store list content in an ordered list 
    ncas = nca_content_list[0].find_elements_by_tag_name("li")

    #make web driver wait until element is visible before further action
    try:
        element = WebDriverWait(driver, 10).until(
        EC.presence_of_element_located((By.XPATH, xpath_nca_list_new)))
    finally:
        count = 1
        #print out list of ncas
        for item in ncas:
            text = item.text
            print(str(count) + ". " + text)
            count=count+1
我对Python非常陌生,所以请原谅任何糟糕的代码。代码有时会打印所有listbox元素的列表,如下所示:

  • AT-奥地利金融市场管理局
  • 比利时国家银行
  • 保加利亚国家银行
  • 塞浦路斯中央银行
  • 捷克国家银行
  • 非联邦金融监管局
  • DK-丹麦金融监管局
  • EE-爱沙尼亚金融监管局
  • 西班牙银行
  • FI-芬兰金融监管局
  • FR-审慎监管和处置机构
  • GB-金融行为管理局(FCA)
  • GR-希腊银行
  • HR-克罗地亚国家银行
  • 匈牙利中央银行
  • 爱尔兰中央银行
  • IS-金融监管局
  • IT-意大利银行
  • li-列支敦士登金融市场管理局
  • LT-立陶宛银行
  • LU-金融业监督委员会
  • LV-金融和资本市场委员会
  • MT-马耳他金融服务管理局
  • 荷兰银行
  • 否-挪威金融管理局
  • 波兰金融监管局
  • 葡萄牙银行
  • 罗马尼亚国家银行
  • SE-瑞典金融监管局
  • SI-斯洛文尼亚银行
  • SK-斯洛伐克国家银行
  • 但有时返回的列表是空的。在同一网页上还有两个其他的列表框,这两个相同的代码对这些元素的作用是一致的

    有人能解释一下为什么会发生这种情况吗?提前谢谢。下面是我尝试使用的listbox元素的HTML代码

    <p-listbox class="col-md-9 ng-untouched ng-pristine ng-valid" name="ncaList" optionlabel="CodeDisplayValue" _ngcontent-bwu-c7="">
    <div class="ui-listbox ui-inputtext ui-widget ui-widget-content ui-corner-all" style="width: 100%;">
        <div class="ui-helper-hidden-accessible">
            <input type="text" readonly="readonly">
        </div>
        <!---->
        <!---->
        <div class="ui-widget-header ui-corner-all ui-listbox-header ui-helper-clearfix ui-listbox-header-w-checkbox ng-star-inserted">
            <!---->
            <div class="ui-chkbox ui-widget ng-star-inserted">
                <div class="ui-helper-hidden-accessible">
                    <input type="checkbox" readonly="readonly">
                </div>
                <div class="ui-chkbox-box ui-widget ui-corner-all ui-state-default"><span class="ui-chkbox-icon ui-clickable"></span></div>
            </div>
            <!---->
        </div>
        <div class="ui-listbox-list-wrapper" style="max-height: 250px;">
            <ul class="ui-listbox-list">
                <!---->
                <li tabindex="0" class="ui-listbox-item ui-corner-all ng-star-inserted" style="display: block;">
                    <!---->
                    <div class="ui-chkbox ui-widget ng-star-inserted">
                        <div class="ui-chkbox-box ui-widget ui-corner-all ui-state-default"><span class="ui-chkbox-icon ui-clickable"></span></div>
                    </div>
                    <!----><span class="ng-star-inserted">AT - Austrian Financial Market Authority</span>
                    <!---->
                </li>
                <li tabindex="0" class="ui-listbox-item ui-corner-all ng-star-inserted" style="display: block;">
                    <!---->
                    <div class="ui-chkbox ui-widget ng-star-inserted">
                        <div class="ui-chkbox-box ui-widget ui-corner-all ui-state-default"><span class="ui-chkbox-icon ui-clickable"></span></div>
                    </div>
                    <!----><span class="ng-star-inserted">BE - National Bank of Belgium</span>
                    <!---->
                </li>
                <li tabindex="0" class="ui-listbox-item ui-corner-all ng-star-inserted" style="display: block;">
                    <!---->
                    <div class="ui-chkbox ui-widget ng-star-inserted">
                        <div class="ui-chkbox-box ui-widget ui-corner-all ui-state-default"><span class="ui-chkbox-icon ui-clickable"></span></div>
                    </div>
                    <!----><span class="ng-star-inserted">BG - Bulgarian National Bank</span>
                    <!---->
                </li>
                <li tabindex="0" class="ui-listbox-item ui-corner-all ng-star-inserted" style="display: block;">
                    <!---->
                    <div class="ui-chkbox ui-widget ng-star-inserted">
                        <div class="ui-chkbox-box ui-widget ui-corner-all ui-state-default"><span class="ui-chkbox-icon ui-clickable"></span></div>
                    </div>
                    <!----><span class="ng-star-inserted">CY - Central Bank of Cyprus</span>
                    <!---->
                </li>
                <li tabindex="0" class="ui-listbox-item ui-corner-all ng-star-inserted" style="display: block;">
                    <!---->
                    <div class="ui-chkbox ui-widget ng-star-inserted">
                        <div class="ui-chkbox-box ui-widget ui-corner-all ui-state-default"><span class="ui-chkbox-icon ui-clickable"></span></div>
                    </div>
                    <!----><span class="ng-star-inserted">CZ - Czech National Bank</span>
                    <!---->
                </li>
                <li tabindex="0" class="ui-listbox-item ui-corner-all ng-star-inserted" style="display: block;">
                    <!---->
                    <div class="ui-chkbox ui-widget ng-star-inserted">
                        <div class="ui-chkbox-box ui-widget ui-corner-all ui-state-default"><span class="ui-chkbox-icon ui-clickable"></span></div>
                    </div>
                    <!----><span class="ng-star-inserted">DE - Federal Financial Supervisory Authority</span>
                    <!---->
                </li>
                <li tabindex="0" class="ui-listbox-item ui-corner-all ng-star-inserted" style="display: block;">
                    <!---->
                    <div class="ui-chkbox ui-widget ng-star-inserted">
                        <div class="ui-chkbox-box ui-widget ui-corner-all ui-state-default"><span class="ui-chkbox-icon ui-clickable"></span></div>
                    </div>
                    <!----><span class="ng-star-inserted">DK - Danish Financial Supervisory Authority</span>
                    <!---->
                </li>
                <li tabindex="0" class="ui-listbox-item ui-corner-all ng-star-inserted" style="display: block;">
                    <!---->
                    <div class="ui-chkbox ui-widget ng-star-inserted">
                        <div class="ui-chkbox-box ui-widget ui-corner-all ui-state-default"><span class="ui-chkbox-icon ui-clickable"></span></div>
                    </div>
                    <!----><span class="ng-star-inserted">EE - Estonian Financial Supervision Authority</span>
                    <!---->
                </li>
                <li tabindex="0" class="ui-listbox-item ui-corner-all ng-star-inserted" style="display: block;">
                    <!---->
                    <div class="ui-chkbox ui-widget ng-star-inserted">
                        <div class="ui-chkbox-box ui-widget ui-corner-all ui-state-default"><span class="ui-chkbox-icon ui-clickable"></span></div>
                    </div>
                    <!----><span class="ng-star-inserted">ES - Bank of Spain</span>
                    <!---->
                </li>
                <li tabindex="0" class="ui-listbox-item ui-corner-all ng-star-inserted" style="display: block;">
                    <!---->
                    <div class="ui-chkbox ui-widget ng-star-inserted">
                        <div class="ui-chkbox-box ui-widget ui-corner-all ui-state-default"><span class="ui-chkbox-icon ui-clickable"></span></div>
                    </div>
                    <!----><span class="ng-star-inserted">FI - Finnish Financial Supervisory Authority</span>
                    <!---->
                </li>
                <li tabindex="0" class="ui-listbox-item ui-corner-all ng-star-inserted" style="display: block;">
                    <!---->
                    <div class="ui-chkbox ui-widget ng-star-inserted">
                        <div class="ui-chkbox-box ui-widget ui-corner-all ui-state-default"><span class="ui-chkbox-icon ui-clickable"></span></div>
                    </div>
                    <!----><span class="ng-star-inserted">FR - Prudential Supervisory and Resolution Authority</span>
                    <!---->
                </li>
                <li tabindex="0" class="ui-listbox-item ui-corner-all ng-star-inserted" style="display: block;">
                    <!---->
                    <div class="ui-chkbox ui-widget ng-star-inserted">
                        <div class="ui-chkbox-box ui-widget ui-corner-all ui-state-default"><span class="ui-chkbox-icon ui-clickable"></span></div>
                    </div>
                    <!----><span class="ng-star-inserted">GB - Financial Conduct Authority (FCA)</span>
                    <!---->
                </li>
                <li tabindex="0" class="ui-listbox-item ui-corner-all ng-star-inserted" style="display: block;">
                    <!---->
                    <div class="ui-chkbox ui-widget ng-star-inserted">
                        <div class="ui-chkbox-box ui-widget ui-corner-all ui-state-default"><span class="ui-chkbox-icon ui-clickable"></span></div>
                    </div>
                    <!----><span class="ng-star-inserted">GR - Bank of Greece</span>
                    <!---->
                </li>
                <li tabindex="0" class="ui-listbox-item ui-corner-all ng-star-inserted" style="display: block;">
                    <!---->
                    <div class="ui-chkbox ui-widget ng-star-inserted">
                        <div class="ui-chkbox-box ui-widget ui-corner-all ui-state-default"><span class="ui-chkbox-icon ui-clickable"></span></div>
                    </div>
                    <!----><span class="ng-star-inserted">HR - Croatian National Bank</span>
                    <!---->
                </li>
                <li tabindex="0" class="ui-listbox-item ui-corner-all ng-star-inserted" style="display: block;">
                    <!---->
                    <div class="ui-chkbox ui-widget ng-star-inserted">
                        <div class="ui-chkbox-box ui-widget ui-corner-all ui-state-default"><span class="ui-chkbox-icon ui-clickable"></span></div>
                    </div>
                    <!----><span class="ng-star-inserted">HU - Central Bank of Hungary</span>
                    <!---->
                </li>
                <li tabindex="0" class="ui-listbox-item ui-corner-all ng-star-inserted" style="display: block;">
                    <!---->
                    <div class="ui-chkbox ui-widget ng-star-inserted">
                        <div class="ui-chkbox-box ui-widget ui-corner-all ui-state-default"><span class="ui-chkbox-icon ui-clickable"></span></div>
                    </div>
                    <!----><span class="ng-star-inserted">IE - Central Bank of Ireland</span>
                    <!---->
                </li>
                <li tabindex="0" class="ui-listbox-item ui-corner-all ng-star-inserted" style="display: block;">
                    <!---->
                    <div class="ui-chkbox ui-widget ng-star-inserted">
                        <div class="ui-chkbox-box ui-widget ui-corner-all ui-state-default"><span class="ui-chkbox-icon ui-clickable"></span></div>
                    </div>
                    <!----><span class="ng-star-inserted">IS - Financial Supervisory Authority</span>
                    <!---->
                </li>
                <li tabindex="0" class="ui-listbox-item ui-corner-all ng-star-inserted" style="display: block;">
                    <!---->
                    <div class="ui-chkbox ui-widget ng-star-inserted">
                        <div class="ui-chkbox-box ui-widget ui-corner-all ui-state-default"><span class="ui-chkbox-icon ui-clickable"></span></div>
                    </div>
                    <!----><span class="ng-star-inserted">IT - Bank of Italy</span>
                    <!---->
                </li>
                <li tabindex="0" class="ui-listbox-item ui-corner-all ng-star-inserted" style="display: block;">
                    <!---->
                    <div class="ui-chkbox ui-widget ng-star-inserted">
                        <div class="ui-chkbox-box ui-widget ui-corner-all ui-state-default"><span class="ui-chkbox-icon ui-clickable"></span></div>
                    </div>
                    <!----><span class="ng-star-inserted">LI - Financial Market Authority Liechtenstein</span>
                    <!---->
                </li>
                <li tabindex="0" class="ui-listbox-item ui-corner-all ng-star-inserted" style="display: block;">
                    <!---->
                    <div class="ui-chkbox ui-widget ng-star-inserted">
                        <div class="ui-chkbox-box ui-widget ui-corner-all ui-state-default"><span class="ui-chkbox-icon ui-clickable"></span></div>
                    </div>
                    <!----><span class="ng-star-inserted">LT - Bank of Lithuania</span>
                    <!---->
                </li>
                <li tabindex="0" class="ui-listbox-item ui-corner-all ng-star-inserted" style="display: block;">
                    <!---->
                    <div class="ui-chkbox ui-widget ng-star-inserted">
                        <div class="ui-chkbox-box ui-widget ui-corner-all ui-state-default"><span class="ui-chkbox-icon ui-clickable"></span></div>
                    </div>
                    <!----><span class="ng-star-inserted">LU - Commission for the Supervision of Financial Sector</span>
                    <!---->
                </li>
                <li tabindex="0" class="ui-listbox-item ui-corner-all ng-star-inserted" style="display: block;">
                    <!---->
                    <div class="ui-chkbox ui-widget ng-star-inserted">
                        <div class="ui-chkbox-box ui-widget ui-corner-all ui-state-default"><span class="ui-chkbox-icon ui-clickable"></span></div>
                    </div>
                    <!----><span class="ng-star-inserted">LV - Financial and Capital Market Commission</span>
                    <!---->
                </li>
                <li tabindex="0" class="ui-listbox-item ui-corner-all ng-star-inserted" style="display: block;">
                    <!---->
                    <div class="ui-chkbox ui-widget ng-star-inserted">
                        <div class="ui-chkbox-box ui-widget ui-corner-all ui-state-default"><span class="ui-chkbox-icon ui-clickable"></span></div>
                    </div>
                    <!----><span class="ng-star-inserted">MT - Malta Financial Services Authority</span>
                    <!---->
                </li>
                <li tabindex="0" class="ui-listbox-item ui-corner-all ng-star-inserted" style="display: block;">
                    <!---->
                    <div class="ui-chkbox ui-widget ng-star-inserted">
                        <div class="ui-chkbox-box ui-widget ui-corner-all ui-state-default"><span class="ui-chkbox-icon ui-clickable"></span></div>
                    </div>
                    <!----><span class="ng-star-inserted">NL - The Netherlands Bank</span>
                    <!---->
                </li>
                <li tabindex="0" class="ui-listbox-item ui-corner-all ng-star-inserted" style="display: block;">
                    <!---->
                    <div class="ui-chkbox ui-widget ng-star-inserted">
                        <div class="ui-chkbox-box ui-widget ui-corner-all ui-state-default"><span class="ui-chkbox-icon ui-clickable"></span></div>
                    </div>
                    <!----><span class="ng-star-inserted">NO - The Financial Authority of Norway</span>
                    <!---->
                </li>
                <li tabindex="0" class="ui-listbox-item ui-corner-all ng-star-inserted" style="display: block;">
                    <!---->
                    <div class="ui-chkbox ui-widget ng-star-inserted">
                        <div class="ui-chkbox-box ui-widget ui-corner-all ui-state-default"><span class="ui-chkbox-icon ui-clickable"></span></div>
                    </div>
                    <!----><span class="ng-star-inserted">PL - Polish Financial Supervision Authority</span>
                    <!---->
                </li>
                <li tabindex="0" class="ui-listbox-item ui-corner-all ng-star-inserted" style="display: block;">
                    <!---->
                    <div class="ui-chkbox ui-widget ng-star-inserted">
                        <div class="ui-chkbox-box ui-widget ui-corner-all ui-state-default"><span class="ui-chkbox-icon ui-clickable"></span></div>
                    </div>
                    <!----><span class="ng-star-inserted">PT - Bank of Portugal</span>
                    <!---->
                </li>
                <li tabindex="0" class="ui-listbox-item ui-corner-all ng-star-inserted" style="display: block;">
                    <!---->
                    <div class="ui-chkbox ui-widget ng-star-inserted">
                        <div class="ui-chkbox-box ui-widget ui-corner-all ui-state-default"><span class="ui-chkbox-icon ui-clickable"></span></div>
                    </div>
                    <!----><span class="ng-star-inserted">RO - National Bank of Romania</span>
                    <!---->
                </li>
                <li tabindex="0" class="ui-listbox-item ui-corner-all ng-star-inserted" style="display: block;">
                    <!---->
                    <div class="ui-chkbox ui-widget ng-star-inserted">
                        <div class="ui-chkbox-box ui-widget ui-corner-all ui-state-default"><span class="ui-chkbox-icon ui-clickable"></span></div>
                    </div>
                    <!----><span class="ng-star-inserted">SE - Swedish Financial Supervisory Authority</span>
                    <!---->
                </li>
                <li tabindex="0" class="ui-listbox-item ui-corner-all ng-star-inserted" style="display: block;">
                    <!---->
                    <div class="ui-chkbox ui-widget ng-star-inserted">
                        <div class="ui-chkbox-box ui-widget ui-corner-all ui-state-default"><span class="ui-chkbox-icon ui-clickable"></span></div>
                    </div>
                    <!----><span class="ng-star-inserted">SI - Bank of Slovenia</span>
                    <!---->
                </li>
                <li tabindex="0" class="ui-listbox-item ui-corner-all ng-star-inserted" style="display: block;">
                    <!---->
                    <div class="ui-chkbox ui-widget ng-star-inserted">
                        <div class="ui-chkbox-box ui-widget ui-corner-all ui-state-default"><span class="ui-chkbox-icon ui-clickable"></span></div>
                    </div>
                    <!----><span class="ng-star-inserted">SK - National Bank of Slovakia</span>
                    <!---->
                </li>
            </ul>
        </div>
        <!---->
    </div>
    
    
    
    • AT-奥地利金融市场管理局
    • 比利时国家银行
    • 保加利亚国家银行
    • 塞浦路斯中央银行
    • 捷克国家银行
    • 非联邦金融监管局
    • DK-丹麦金融监管局
    • EE-爱沙尼亚金融监管局
    • 西班牙银行
    • FI-芬兰金融监管局
    • FR-审慎监管和处置机构
    • GB-金融行为管理局(FCA)
    • GR-希腊银行
    • HR-克罗地亚国家银行
    • wait = WebDriverWait(driver, 10) wait.until(EC.element_to_be_clickable((By.LINK_TEXT, "Institution Search"))).click() search_button = wait.until(EC.element_to_be_clickable((By.CSS_SELECTOR, "[label=Search] button"))) driver.execute_script("arguments[0].scrollIntoView()", search_button) search_button.click() nca_list = wait.until(EC.visibility_of_all_elements_located((By.CSS_SELECTOR, "[name=ncaList] li"))) for nca in nca_list: print(nca.text)