为了账号安全,请及时绑定邮箱和手机立即绑定

如何使用 selenium 网络驱动程序选择复选框

如何使用 selenium 网络驱动程序选择复选框

有只小跳蛙 2023-06-08 17:37:08
在我的网页(或弹出窗口)中,有多个输入框和复选框。输入框和复选框位于单独的 div 标签中。这是我的 html 代码:<div class="modal-body-large">    <div class="col-md-12 step-forms custom-tab-content">        <form class="form-horizontal form-sections">            <div class="form-group">                <label class="control-label col-sm-2">Username<span class="red">*</span></label>                <div class="col-sm-10">                    <input name="userId" class="form-control custom-form-control" type="text" placeholder="Username" value="">                </div>            </div>            <div class="form-group">                <label class="control-label col-sm-2">Email<span class="red">*</span></label>                <div class="col-sm-10">                    <input name="email" class="form-control custom-form-control" type="text" placeholder="Email" value="">                </div>            </div>            .....        </form>    </div>    <div class="col-md-12 step-forms custom-tab-content">        <form class="form-horizontal"><span class="help-block" style="font-size: small;"><i>Note: Optional</i></span>            <div class="col-md-6">                <div>                    <div class="form-sections">                        <ul>                            <li>Select permissions</li>                            <li>                                <input type="checkbox" id="permissions1565851434728" name="permissions">                                <label for="permissions1565851434728" class="xh-highlight">Select all</label>                            </li>                        </ul>                        <div class="searchbox-container">                            <div class="check-list">                                <ul>当我来到这个页面时,我能够成功地在输入字段中输入文本。当涉及到选择复选框时,我必须为该复选框提供完整的 xpath。就像,如果我想选择复选框全选,我将 xpath 指定为我担心有没有其他方法可以做到这一点?
查看完整描述

4 回答

?
哈士奇WWW

TA贡献1799条经验 获得超6个赞

要在与as Select all关联的复选框click()上,因为所需的元素在Modal Dialog中,您必须为此引入WebDriverWait并且您可以使用以下Locator Strategy:<label>elementToBeClickable()

  • xpath:

    new WebDriverWait(driver, 20).until(ExpectedConditions.elementToBeClickable(By.xpath("//li[text()='Select permissions']//following::li[1]//label"))).click();



查看完整回答
反对 回复 2023-06-08
?
汪汪一只猫

TA贡献1898条经验 获得超8个赞

选择复选框类似于单击按钮。我看到有id所有复选框和value一些复选框的字段。所以你可以使用下面的方法来完成你所需要的。


id通过将复选框传递给 来选择复选框XPath,


driver.findElement(By.xpath(".//*[@id='permissions1565851434728']")).sendKeys(Keys.SPACE);

您可以单击复选框而不是像下面这样发送密钥,


WebElement checkBox = driver.findElement(By.id("permissions1565851434728"));

checkBox.click();

value通过将复选框传递给 来选择复选框CSSSelector,


WebElement checkBox = driver.findElement(By.cssSelector("input[value='Add/Update Network Security']"));

checkBox.click();

如果有 2 个复选框,您可以按如下方式使用,


driver.FindElements(By.xpath("(//input[@type='checkbox'])[1]"));

driver.FindElements(By.xpath("(//input[@type='checkbox'])[2]")); ...

Selenium WebDriver 使用浏览器的本地方法与 Web 组件进行交互。尽管如此,有时 Web 组件不会对这些本机方法做出反应。在这种情况下,最可靠的选择是 JavaScript。


因此,您可以尝试使用以下 JavaScript 与 Web 元素进行交互,


WebElement element = driver.findElement(By.cssSelector("input[value='Add/Update Network Security']"));


((JavascriptExecutor)driver).executeScript("arguments[0].click();", element);

你也可以试试DebanjanBWebDriverWait说的。


查看完整回答
反对 回复 2023-06-08
?
慕婉清6462132

TA贡献1804条经验 获得超2个赞

您可以使用xpath,并用于WebDriverWait使元素存在然后使用Actions,试试这个:


new WebDriverWait(driver, 20).until(ExpectedConditions.elementToBeClickable(By.xpath("//*[@type='checkbox' and contains(@id,'permissions')]")));

WebElement elmnt = driver.findElement(By.xpath("//*[@type='checkbox' and contains(@id,'permissions')]"));

Actions act = new Actions(driver);

act.moveToElement(elmnt).click().build().perform();

或者


new WebDriverWait(driver, 20).until(ExpectedConditions.elementToBeClickable(By.xpath("(//*[@type='checkbox'])[1]")));

WebElement elmnt = driver.findElement(By.xpath("(//*[@type='checkbox'])[1]"));

Actions act = new Actions(driver);

act.moveToElement(elmnt).click().build().perform();

如果您想要另一个复选框,请将其更改[1]为等。[2]


查看完整回答
反对 回复 2023-06-08
?
森栏

TA贡献1810条经验 获得超5个赞

您可以使用 uncle 元素的文本。要Select all下,Select permissions你可以使用

//li[contains(., 'Select permissions')]/following-sibling::li/label


查看完整回答
反对 回复 2023-06-08
  • 4 回答
  • 0 关注
  • 136 浏览

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信