programing

Selenium 체크 박스 속성 "선택됨"

nasanasas 2020. 11. 17. 08:10
반응형

Selenium 체크 박스 속성 "선택됨"


Java에서 Selenium을 사용하여 웹 앱의 확인란 확인을 테스트하고 있습니다. 코드는 다음과 같습니다.

private boolean isChecked;
private WebElement e;

e체크 박스가있는 영역에 선언 하고 할당합니다.

isChecked = e.findElement(By.tagName("input")).getAttribute("checked").equals("true");

이상한 것은 getAttribute("checked")반환 null되므로NullPointerException

확인란의 HTML에는 checked표시된 속성 이 없습니다 . 그러나 모든 input요소 checked = "true"에이 코드가 있으므로이 코드가 작동해야하는 경우가 아닙니까?


Webdriver를 사용하는 경우 찾고있는 항목은 선택됨입니다.

종종 확인란의 렌더링에서 지정하지 않는 한 선택된 속성을 실제로 적용하지 않습니다.

따라서 Selenium Webdriver에서 찾는 것은 다음과 같습니다.

isChecked = e.findElement(By.tagName("input")).Selected;

WebDriver Java API에는 Selected가 없으므로 위 코드는 다음과 같아야합니다.

isChecked = e.findElement(By.tagName("input")).isSelected();

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

 if(checkBox.getAttribute("checked") != null) // if Checked 
    checkBox.click();                         //to Uncheck it 

and체크가 참인지 확인하기 위해 문을 추가 할 수도 있습니다 .


cssSelector로 할 것입니다.

// for all checked checkboxes
driver.findElements(By.cssSelector("input:checked[type='checkbox']"));
// for all notchecked checkboxes
driver.findElements(By.cssSelector("input:not(:checked)[type='checkbox']"));

어쩌면 그것은 도움이 될지도 모릅니다 ;-)


몇 개의 확인란 만 선택 / 선택 취소하려는 여러 확인란이있는 경우 Chrome 드라이버에서 다음 작업이 수행됩니다 (IE 드라이버에서는 실패 함).

참고 : 내 확인란에는 연결된 ID가 없었으므로 문서에 따라 확인하는 가장 좋은 방법입니다. !성명서의 시작 부분에 있는 기호에 유의하십시오 .

if(!driver.findElement(By.xpath("//input[@type='checkbox' and @name='<name>']")).isSelected()) 
{
  driver.findElement(By.xpath("//input[@type='checkbox' and @name= '<name>']")).click();
}

셀레늄 프레임 워크의 메커니즘 :

여기서 셀레늄은 서버에 요청하고 태그 이름 입력으로 첫 번째 하위 요소를 가져옵니다.

WebElement e = e.findElement(By.tagName("input"));

해당 요소에 대한 속성을 받으려는 것보다

object attribute = e.getAttribute("checked")

그래서 사용

findElement(By.attribute("checked")

또는 사용

findElement(By.xpath("\\input[@checked='true']")

추신 : 나는 자바의 셀레늄 API에 익숙하지 않으므로 일부 메서드의 이름이 약간 다를 수 있습니다.


  1. 변수를 선언하십시오.
  2. 라디오 버튼에 대해 확인 된 속성을 저장합니다.
  3. if 조건이 있습니다.

가정하자

private string isChecked; 
private webElement e; 
isChecked =e.findElement(By.tagName("input")).getAttribute("checked");
if(isChecked=="true")
{

}
else 
{

}

이 답변이 도움이되기를 바랍니다. CSharp Selenium 웹 드라이버에 대한 설명이 있으면 알려주십시오.


public boolean getcheckboxvalue(String element)
    {   
        WebElement webElement=driver.findElement(By.xpath(element));
        return webElement.isSelected();
    }

참고 URL : https://stackoverflow.com/questions/8187772/selenium-checkbox-attribute-checked

반응형