簡體   English   中英

Java Selenium使元素脫離使用JavaScript檢查的表單

[英]Java Selenium getting Elements out of a Form which are Checked with JavaScript

我想選擇復選框並檢查是否選中了HTML看起來像這樣

h3>Checkboxes</h3>
<form id="checkboxes">
<input type="checkbox">
checkbox 1
<br>
<input checked="" type="checkbox">
checkbox 2
</form>
</div>


h3>Checkboxes</h3>
<form id="checkboxes">
<input type="checkbox">
checkbox 1
<br>
<input checked="" type="checkbox">
checkbox 2
</form>
</div>

<script>

var form = document.getElementById('checkboxes');
var checkboxes = form.getElementsByTagName('input');
for (var i=0, len=checkboxes.length; i<len; i++) {
    checkboxes[i].onclick = function() {
      this.checked ? this.setAttribute("checked", "") : this.removeAttribute("checked");
    }
}
</script>

我試圖通過xpath,id和tagName來獲取elemtns,但沒有任何效果。

這是我的Java代碼:

WebDriver driver = new FirefoxDriver();
        driver.get("http://the-internet.herokuapp.com/");
        driver.findElement(By.xpath("html/body/div[2]/div/ul/li[5]/a")).click();
        List<WebElement> elements = driver.findElements(By.id("checkboxes"));

我的探究是元素的大小為0

您可以使用下面編寫的Java代碼找到復選框編號:

    System.setProperty("webdriver.gecko.driver", "src/geckodriver");
    WebDriver driver = new FirefoxDriver();

    WebDriverWait wait = new WebDriverWait(driver, 30);
    driver.get("http://the-internet.herokuapp.com/");
    driver.findElement(By.xpath("html/body/div[2]/div/ul/li[5]/a")).click();

    By locator = By.xpath("//input[@type='checkbox']");
    wait.until(ExpectedConditions.presenceOfElementLocated(locator));
    wait.until(ExpectedConditions.visibilityOfElementLocated(locator));
    List<WebElement> elements = driver.findElements(locator);
   int size = elements.size();
    System.out.println(size);

您可以選擇任何所需的復選框,然后可以在網頁上檢查該復選框的狀態:

用於檢查復選框狀態的代碼段

for(int i=0; i<elements.size();i++){
        String check_state= elements.get(i).getAttribute("checked");
        if(check_state == null){
            System.out.println("Checbox "+(i+1)+" is not selected");
        }
    }

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM