2017-09-28 1 views
0

Selenium을 사용하여 요소의 CSS 클래스 변경을 찾는 방법은 무엇입니까?Java Selenium 3.5.3 CSS 클래스가 변경 될 때까지 기다리십시오

클래스는 현재 브라우저에서 선택된 요소를 표시합니다.

<span class="tabs2_tab guide_tab"> [...] </span> 
사이트 새로 고침을 클릭에

과에 클래스를 변경 ...

<span class="tabs2_tab guide_tab is-required"> [...] </span> 

이미 로딩을 완료 브라우저를 기다리고했지만, '내가 할 수 있기 때문에 정말 작동하지 않습니다 t 드라이버가 을 기다려야합니다. CSS- 클래스가 변경되었습니다. 분명히 이것은 사이트의 상태를 정의 할 때 참조 할 수있는 유일한 변경 사항입니다. 프레임이 새로 고침되는 것처럼 보이지만 요소는 이 아닌 클래스를 제외하고 완전히 동일하게 유지됩니다.

저는 현재 사이트에서 작업하고 있습니다. 실제로 사이트와 작업하는 것이 좋지 않습니다. 누락 된 ID 및 유사 항목 때문입니다. 말할 필요도없이이 사이트가 내 사이트가 아니며 코드를 편집 할 수도 없습니다.

아이디어가 있으십니까? C#에서 사전 :

+0

이 CSS 요소 'span.tabs2_tab.guide_tab.is-required'를 기다리는 것은 어떻습니까? CSS가 실제로 변경되었을 때만 나타납니다. –

+0

슬프게도 이런 요소가 여러 개 있습니다. – Phil

+0

그러면 CSS 변경을 확인하기 위해이 요소에 어떻게 접근합니까? –

답변

0

에서

덕분에 나는 WebElement 속성이 변경되었고 내가 아는 한 자바에 대해 동일한 패턴을 사용할 수 있는지 확인하려면이 옵션을 사용합니다. 이 메서드는 name으로 지정된 특성의 value이 변경된 경우에만 표시됩니다.

여러분은 driver 어딘가에 desiredTimeout과 같은 인스턴스를 가지고 있다고 가정 해 봅시다.

public void WaitForAttributeToChange(IWebElement element, string name, string previousValue) 
    { 
     WebDriverWait wait = new WebDriverWait(driver, desiredTimeout); 
     wait.Until((d) => 
     { 
      if (element.GetAttribute(name) != previousValue) 
      { 
       return element; 
      } 
      return null; 
     }); 
    } 

을 그리고 그 후에 당신은 그것을 좋아 호출 할 수 있습니다 : 그래서 C#으로, 당신은

WaitForAttributeToChange(yourElement, "class", "previous_class_here"); 

이 크기 변화와 함께 일 나는 당신이 자바에이 번역 경우가 트릭을 할 수 있습니다 생각 때문에. 내가 아는 한, Java에는 람다식이 포함되어 있으므로 괜찮을 것입니다.

관련 문제