猿问

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

在我的网页(或弹出窗口)中,有多个输入框和复选框。输入框和复选框位于单独的 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 指定为

我担心有没有其他方法可以做到这一点?


有只小跳蛙
浏览 176回答 4
4回答

哈士奇WWW

要在与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();

汪汪一只猫

选择复选框类似于单击按钮。我看到有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说的。

慕婉清6462132

您可以使用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]

森栏

您可以使用 uncle 元素的文本。要Select all下,Select permissions你可以使用//li[contains(.,&nbsp;'Select&nbsp;permissions')]/following-sibling::li/label
随时随地看视频慕课网APP

相关分类

Java
我要回答