如何从selenium中的搜索下拉列表中选择值

2024-06-02 17:04:04 发布

您现在位置:Python中文网/ 问答频道 /正文

我需要将所有的值从下拉菜单导入到GUI的combobox中。你知道吗

之后,我需要通过点击组合框来选择一个值。你知道吗

但没有起作用。 请帮助我从下拉列表中选择一个值。 如何获取下拉列表中所有可用的文本值?你知道吗


from selenium.webdriver.support.ui import WebDriverWait
from selenium.webdriver.support import expected_conditions as EC
from selenium.webdriver.common.by import By
from selenium.common.exceptions import TimeoutException
from PyQt5.QtWidgets import QApplication
from selenium import webdriver
from selenium.webdriver.support.ui import Select
from selenium.common.exceptions import StaleElementReferenceException
from selenium.webdriver.common.keys import Keys
from PyQt5 import QtCore, QtGui, QtWidgets
from PyQt5.QtGui import QIcon, QPixmap
import time
import os

    def first(self):

        url = 'https://www....aspx'
        driver = webdriver.Chrome(executable_path="chromedriver.exe")
        driver.get(url)
        s1 = Select(driver.find_element_by_id('select2-ctl00_PlaceHolderMain_oDistributionUC_ddlClass-container'))

        all_options = s1.options
        for options in all_options:
            self.comboBoxClass.addItem(options.text)
            print(options.text)

        self.comboBoxClass.activated.connect(self.loading_2)

    def loading_2(self):
        s1.select_by_visible_text(str(self.comboBoxClass.currentText()))

HTML代码:




<div id="ctl00_PlaceHolderMain_oDistributionUC_oClassUpdatePanel">

        <div id="ctl00_PlaceHolderMain_oDistributionUC_trEmptyRow" class="col-xs-12 no_padding">
            <div class="col-xs-5 col-sm-4">
                <span class="manditory"></span>
            </div>

            <div class="col-xs-7 col-sm-8 feild_data">
            </div>
        </div>

        <div id="ctl00_PlaceHolderMain_oDistributionUC_trClass" class="col-xs-12 no_padding">
            <div class="col-xs-5 col-sm-4 feild_title divDistributionSearchTitle">
                <span id="ctl00_PlaceHolderMain_oDistributionUC_tdStar04" class="manditory">*</span>
                <span id="ctl00_PlaceHolderMain_oDistributionUC_lblClass" class="StandardFont" style="display:inline-block;width:120px;">class</span>
            </div>

            <div class="col-xs-7 col-sm-8 feild_data divDistributionSearchData">
                <select name="ctl00$PlaceHolderMain$oDistributionUC$ddlClass" onchange="javascript:setTimeout(&#39;__doPostBack(\&#39;ctl00$PlaceHolderMain$oDistributionUC$ddlClass\&#39;,\&#39;\&#39;)&#39;, 0)" id="ctl00_PlaceHolderMain_oDistributionUC_ddlClass" class="control-dropdownlist" style="width:100%;">
            <option selected="selected" value="-99">-- chose --</option>
            <option value="1,1">good1 </option>
            <option value="2,1">good2 </option>
            <option value="3,1">good3 </option>
            <option value="4,1">good4 </option>
            <option value="5,1">good5 </option>
            <option value="6,1">good6 </option>

        </select>



                <div id="ctl00_PlaceHolderMain_oDistributionUC_tdValidatorClass">
                    <div id="ctl00_PlaceHolderMain_oDistributionUC_oUpdatePanelrfvClass">

                            <span id="ctl00_PlaceHolderMain_oDistributionUC_rfvClass" class="ValidationClass" style="display:inline-block;width:100px;display:none;"> chose class.</span>



像good1,good2,good3,。。。你知道吗

更新:

谢谢NitishKshirsagar 现在正在工作:

drop_down = driver.find_element_by_css_selector('#ctl00_PlaceHolderMain_oDistributionUC_trClass .divDistributionSearchData')

ActionChains(driver).move_to_element(drop_down).perform()
drop_down.click()
drop_down = driver.switch_to.active_element

element = driver.find_element_by_css_selector("#ctl00_PlaceHolderMain_oDistributionUC_trClass .divDistributionSearchData select")
all_options = element.find_elements_by_tag_name("option")
for option in all_options:
    print(option.text)




Tags: fromimportdividdriverseleniumcolclass
1条回答
网友
1楼 · 发布于 2024-06-02 17:04:04

由于下拉列表不是Select类型,因此不能在此下拉列表上使用Select方法。您需要使用xpath单击元素。 你可以这样做:

em = driver.find_elements_by_xpath("//span[@class='select2-selection select2-selection single']//span[@id='select2-ctl00_PlaceHolderMain_oDistributionUC_ddlClass-container']")

相关问题 更多 >