Как выбрать элемент по значению, используя Selenium и C# - PullRequest
0 голосов
/ 04 марта 2020

У меня есть неупорядоченный список, где, когда я нажимаю на элемент, он покажет, что результат здесь html page

<div class="dataTables_length col s12" id="dataTables-1_length"><label>Show</label><div class="select-wrapper"><span class="caret">▼</span><input type="text" class="select-dropdown" readonly="true" data-activates="select-options-49a1af1e-da84-b5fc-3c3f-ce38dc701d6a" value="10" wtx-context="444F3577-1027-491E-8B1A-08A1D49E2E7E"><ul id="select-options-49a1af1e-da84-b5fc-3c3f-ce38dc701d6a" class="dropdown-content select-dropdown" style="width: 382px; position: absolute; top: 0px; left: 0px; opacity: 1; display: none;"><li class="active"><span>10</span></li><li class=""><span>25</span></li><li class=""><span>50</span></li><li class=""><span>100</span></li></ul><select name="dataTables-1_length" aria-controls="dataTables-1" class="initialized" wtx-context="3DE7F091-A80A-4AB0-8CB0-0B8D71C12B52"><option value="10">10</option><option value="25">25</option><option value="50">50</option><option value="100">100</option></select></div></div>

hre - это то, что я уже пробовал с c# с использованием селена

driver.FindElementsByXPath("//ul[@class='dropdown-content select-dropdown']")[0].Click();
driver.FindElementsByXPath("//span[contains(text(),'100')]")[0].Click();

Но приведенный выше код все еще не работает. Затем я попробую второй, используя следующий код:

var select = driver.FindElementsByXPath("//input[@class='select-dropdown']")[0];
select.SendKeys("100");
select.Click();

Но он не щелкнет.

Я уверен, что с моим кодом что-то не так, надеюсь, вы поможете мне решить мои проблемы.

Редактировать: на самом деле есть 3 выпадающих меню, но я хочу установить только первое https://imgur.com/7jKkjaF, поэтому я использую индекс [0]

здесь завершено html

Я хочу получить «Показать» и установить значение 100

<div class="col s12 m3 ">
            <div class="filtercontainer grey lighten-4"><h6>Filter Soal</h6><div class="row filter_row">
            <div id="dataTables-1_filter" class="dataTables_filter col s12"><label>Search:<input type="search" class="" aria-controls="dataTables-1"></label>
            </div><div id="dataTables-1_tag" class="dataTables_tag col s12"><label>Kompetensi Dasar:<input id="searchkompetensidasar" type="search" class="tagit-hidden-field" aria-controls="dataTables-1"><ul class="tagit ui-widget ui-widget-content ui-corner-all"><li class="tagit-new"><input type="text" class="ui-widget-content ui-autocomplete-input" autocomplete="off"></li></ul></label></div>
            <div class="dataTables_length col s12" id="dataTables-1_length"><label>Show</label><div class="select-wrapper"><span class="caret">▼</span><input type="text" class="select-dropdown" readonly="true" data-activates="select-options-a128ff92-06b9-59c9-4821-45c1c25f8835" value="10"><ul id="select-options-a128ff92-06b9-59c9-4821-45c1c25f8835" class="dropdown-content select-dropdown "><li class=""><span>10</span></li><li class=""><span>25</span></li><li class=""><span>50</span></li><li class=""><span>100</span></li></ul><select name="dataTables-1_length" aria-controls="dataTables-1" class="initialized"><option value="10">10</option><option value="25">25</option><option value="50">50</option><option value="100">100</option></select></div></div></div>
            <div class="row filterrow1">
                <div id="placefortipefilter" class="input-field col s12">
                <div class="select-wrapper 0"><span class="caret">▼
                </span><input type="text" class="select-dropdown" readonly="true" data-activates="select-options-5b4dd233-a0a6-e59c-dbf0-fd3d648ef3b0" value="Semua">
                <ul id="select-options-5b4dd233-a0a6-e59c-dbf0-fd3d648ef3b0" class="dropdown-content select-dropdown "><li class=""><span>Semua</span></li><li class=""><span>PG</span></li></ul><select class="0 initialized"><option value="">Semua</option><option value="PG">PG</option></select></div><label>Tipe :</label></div>


                <div id="placeforlevelfilter" class="input-field col s12"><div class="select-wrapper 0"><span class="caret">▼</span><input type="text" class="select-dropdown" readonly="true" data-activates="select-options-d25e1b45-8e8c-45f2-436b-aaea2182da92" value="Semua"><ul id="select-options-d25e1b45-8e8c-45f2-436b-aaea2182da92" class="dropdown-content select-dropdown "><li class=""><span>Semua</span></li><li class=""><span>Mudah</span></li><li class=""><span>Sedang</span></li><li class=""><span>Sulit</span></li></ul><select class="0 initialized"><option value="">Semua</option><option value="Mudah">Mudah</option><option value="Sedang">Sedang</option><option value="Sulit">Sulit</option></select></div><label>Level :</label></div>


                <div id="placeforkdfilter" class="input-field col s12">
                    &nbsp;
                    <!-- <select>
                      <option value="" disabled selected>Semua </option>
                      <option value="1">Semua</option>
                      <option value="2">Pilihan Ganda</option>
                      <option value="3">Essay</option>
                    </select>
                    <label>Kompetensi Dasar</label> -->
                </div>
            </div>
            </div>
        </div>

Ответы [ 2 ]

0 голосов
/ 05 марта 2020
driver.FindElementsByXPath("//div[@id='dataTables-1_length']//div[@class='select-wrapper']").Click();
driver.FindElementsByXPath("//li//span[text()='100']").Click();

Если я правильно понял и проверил html, то это должно поставить вас на правильный путь. Дайте мне знать, если это работает.

0 голосов
/ 04 марта 2020

Попробуйте это:

driver.FindElementsByXPath("//select[@class='initialized']").Click();
driver.FindElementsByXPath("//option[@value='100']").Click();
...