【问题标题】:How to click on a checkbox after expanding the dropdown as per the HTML如何在根据 HTML 展开下拉列表后单击复选框
【发布时间】:2019-01-02 21:41:16
【问题描述】:
**HTML:**

<div id="ctl05_ctl03_cblUser" class="RadComboBox RadComboBox_Silk" 
style="width:250px;white-space:normal;"> 
<table summary="combobox" border="0" style="border-width:0;border- 
collapse:collapse;width:100%" class="">
<tbody>
<tr>
<td class="rcbInputCell rcbInputCellLeft" style="width:100%;">
<input name="ctl05$ctl03$cblUser" type="text" class="rcbInput 
 radPreventDecorate" id="ctl05_ctl03_cblUser_Input" value="" autocomplete="off">
</td>
<td class="rcbArrowCell rcbArrowCellRight">
<a id="ctl05_ctl03_cblUser_Arrow" style="overflow: hidden;display: 
block;position: relative;outline: none;">select
</a>
</td> 
</tr>
</tbody>
</table>
<input id="ctl05_ctl03_cblUser_ClientState" 
 name="ctl05_ctl03_cblUser_ClientState" type="hidden" autocomplete="off">
 </div>
 <div class="rcbSlide" style="z-index: 6000; display: block; width: 250px; 
  top: 362.594px; left: 247px; overflow: visible;">
<div id="ctl05_ctl03_cblUser_DropDown" class="RadComboBoxDropDown 
  RadComboBoxDropDown_Silk " style="width: 248px; display: block; top: 0px; 
    visibility: visible; transition: none;">
<div class="rcbScroll rcbWidth" style="height: 345px;">
<ul class="rcbList">
<li class="rcbItem">
<label>
<input type="checkbox" class="rcbCheckBox">John, Smith</label>: :after
 </li>
 <li class="rcbItem"><label>
 <input type="checkbox" class="rcbCheckBox">Jane, Dow</label>: :after
 </li>
 </ul>
 </div>
</div>

在此处添加注释中的代码以供进一步分析。 driver.findElement(By.xpath("//div[@class='RadComboBoxDropDown RadComboBoxDropDown_Silk'][contains(@id,'_cblUser_DropDown')]//ul[@class='rcbList']//label[contains(. ,'John, Smith')]/input[@class='rcbCheckBox']")).click();

【问题讨论】:

  • 您尝试使用 Selenium 自动化哪个浏览器?什么是配置?除了单击复选框之外还有其他功能吗?
  • @CodeJockey - 它的 chrome 并展开下拉列表但不选择/单击复选框项目。下拉菜单展开和关闭。
  • 也许尝试给每个复选框元素一个 ID。这样你只需要输入 Id,你就不必乱用这些过于复杂的选择器了。

标签: java selenium selenium-webdriver xpath webdriver


【解决方案1】:

您可以使用下面的 xpath 选择复选框。我已指定示例以根据名称(Jane,Dev)选择复选框

Xpath: //div[@class='rcbSlide']//ul[@class='rcbList']//*[contains(text(),'Jane, Dev')]/input

driver.findElement(By.xpath("//div[@class='rcbSlide']//ul[@class='rcbList']//*[contains(text(),'Jane, Dev')]/input")).click();

【讨论】:

    【解决方案2】:

    它对我有用。我看不出你的逻辑有什么问题。您可以等待元素可点击后再点击。

     WebElement ddl = driver.findElement(By.id("ctl05_ctl03_cblUser_Arrow"));
     ddl.click();
     WebDriverWait wait = new WebDriverWait(driver, 60);
     WebElement lis = driver.findElement(By.className("rcbItem"));
     WebElement checkBox = wait.until(ExpectedConditions.elementToBeClickable(lis.findElement(By.className("rcbCheckBox")))); 
     checkBox.click();    
    

    【讨论】:

      【解决方案3】:

      在点击下拉选项之前,请确保您有足够的等待时间让下拉选项可见。您可以尝试几个选项。 对于简,陶氏

      driver.findElement(By.cssSelector("li#rcbItem>label>input")).click();
      
      driver.findElement(By.xpath("//li[@class='rcbItem']/label/input")).click();
      
      //if you know the text
      driver.findElement(By.xpath("//input[text()='Jane, Dow']")).click();
      

      【讨论】:

        【解决方案4】:

        根据您在复选框上与click()共享的HTML,文本为John, Smith,您可以使用以下内容解决方案:

        driver.findElement(By.xpath("//td[@class='rcbInputCell rcbInputCellLeft']/input[@class='rcbInput radPreventDecorate'][contains(@id,'User_Input')]")).click();
        driver.findElement(By.xpath("//div[@class='RadComboBoxDropDown RadComboBoxDropDown_Silk'][contains(@id,'_cblUser_DropDown')]//ul[@class='rcbList']//label[contains(.,'John, Smith')]/input[@class='rcbCheckBox']")).click();
        

        【讨论】:

        • @John 你确定 Dropdown 正在扩大吗?
        • @John 好的,您确定 HTML 的前两行唯一标识了 Dropdown 元素吗?
        • @John 您能否使用此信息更新实际问题以进行进一步分析?
        • @John 查看我更新的答案并让我知道状态。展望未来,当您更新任何问题时,请附加附加信息,并且请不要从问题中删除任何现有上下文或删除任何 cmets。否则调试变得困难。
        • @DebanjanB - 感谢您提供更新的答案,但没有一个有效。
        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2020-01-08
        • 2017-12-25
        • 1970-01-01
        • 2023-03-30
        • 2019-02-18
        相关资源
        最近更新 更多