【问题标题】:How to select an element by value using Selenium and C#如何使用 Selenium 和 C# 按值选择元素
【发布时间】:2020-03-04 16:49:10
【问题描述】:

我有无序列表,当我点击元素时,它会显示结果这里是 html 页面

<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# 中使用 selenium 尝试过的

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>

【问题讨论】:

  • 什么错误?当它下降时,当你点击下拉菜单或当你试图选择 100 时?
  • 未能选择100
  • @IPoln​​ik 你为什么要删除你的答案?
  • 嗨,Umar,我没有删除我的答案,你没看到吗?你的问题解决了吗?

标签: c# selenium xpath css-selectors webdriverwait


【解决方案1】:

试试这个:

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

【讨论】:

  • 嗨,我已经尝试过使用您的解决方案,但在 OpenQA.Selenium.Remote 上遇到了类似这样的未处理异常:OpenQA.Selenium.ElementNotInteractableException:元素不可交互(会话信息:chrome=80.0.3987.132)。 RemoteWebDriver.UnpackAndThrowOnError(Response errorResponse) at OpenQA.Selenium.Remote.RemoteWebDriver.Execute(String driverCommandToExecute, Dictionary`2 参数)
  • 这里是我尝试过的 driver.FindElementsByXPath("//select[@class='initialized']")[0].Click(); driver.FindElementsByXPath("//option[@value='100']")[0].Click();
  • 你为什么一直添加 [0] 索引?
【解决方案2】:
driver.FindElementsByXPath("//div[@id='dataTables-1_length']//div[@class='select-wrapper']").Click();
driver.FindElementsByXPath("//li//span[text()='100']").Click();

如果我正确理解并检查了 html,那么这应该会让你走上正轨。让我知道它是否有效。

【讨论】:

  • 感谢您的回答,您的代码仅显示下拉列表,而不是单击值 100
  • 第二段代码一旦打开就会点击下拉列表。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2019-06-03
  • 2020-10-02
  • 2014-11-02
  • 2014-10-09
相关资源
最近更新 更多