【问题标题】:Selenium Java - mark checkbox selected without using .click()Selenium Java - 在不使用 .click() 的情况下选中复选框
【发布时间】:2016-02-01 22:17:54
【问题描述】:

我想使用 Selenium 和 Java 将一些复选框标记为已选中,但在 .css 样式表中,它们的“宽度”和“高度”设置为“100”,但在浏览器中它们显示为普通复选框。因为这个 selenium 找到它们并成功执行 .click() 函数,但复选框没有被选中。 有没有办法简单地将复选框设置为选中而不使用 .click() ?

【问题讨论】:

    标签: java selenium


    【解决方案1】:

    如果没有可重现的样本很难说,但您可以尝试通过 javascript 点击

    WebElement checkbox = driver.findElement(By.ID("mycheckbox"));
    
    JavascriptExecutor js = (JavascriptExecutor) driver;
    js.executeScript("arguments[0].click();", checkbox);
    

    在这里查看差异:

    【讨论】:

    • 这不是和 click() 类似,只是增加了调用 JS 执行器的开销吗?
    • @codeMan 不,这些完全不同:stackoverflow.com/questions/34562061/…
    • 我不知道这个!作者还说这应该“几乎从不”使用。
    • @codeMan 好吧,这取决于您要做什么。如果这是出于抓取目的,或者是解决浏览器特定问题的解决方法,那几乎可以。我同意,在一般的 UI 测试应用程序时应该避免这种情况。
    【解决方案2】:

    恐怕复选框上没有 select() 方法, 但你可以写这样的东西并重用它..这将抽象选择的操作

    if ( !driver.findElement(By.id("idOfTheElement")).isSelected() )
    {
        driver.findElement(By.id("idOfTheElement")).click();
    }
    

    【讨论】:

    • 问题是正常的 .click() 没有激活复选框。
    猜你喜欢
    • 2011-04-25
    • 1970-01-01
    • 1970-01-01
    • 2020-02-24
    • 1970-01-01
    • 2014-01-29
    • 2012-12-07
    • 1970-01-01
    • 2018-06-17
    相关资源
    最近更新 更多