2017-04-12 1 views
-2

행이 표시되는지 여부를 확인하려고합니다. 나는 파이썬과 셀레늄을 사용하고있다. 여기에 지금까지 내가 달성하기 위해 노력하고파이썬 IF 문이 다른 것을 인식 할 수 없습니다 :

try: 
     row = self.driver.find_element_by_xpath(<row6>).is_displayed() 
     if row is False: 
      print("button is not displayed. Test is passed") 
     else: 
      do stuff 
    except: 
     NoSuchElementException 

을 시도한 것입니다 다음 : 페이지 # 2 < 6

나는 아직도에 로직이를 행 경우 1 만 버튼이 표시됩니다 페이지 # 행이 False 인 경우 조건 -> 쓰기 :. 그러나 그것은 틀린 경우 atleast 문자열을 인쇄해야합니다.

현재로서는 코드가 작동하지 않습니다. 오류 표시가 없지만 try : NoSuchElementException에서 종료합니다.

업데이트 : 또한 페이지 번호 1에 버튼이 표시되는지 확인하고 행 2가있는 경우 유효성을 검사하는 다음 코드를 시도했습니다. 버튼이 표시되면 작동합니다. 버튼이 표시되지 않은 경우, 오류가 발생합니다 : 예외 : NoSuchElementException : 메시지 : 요소 찾을 수 없습니다 :

try: 
     button = self.driver.find_element_by_xpath(PATH) 
     if button.is_displayed(): 
      do stuff 
      row = self.driver.find_element_by_xpath(<row6>) 
      if row.is_displayed(): 
       do stuff 
      else: 
       do stuff 
    except: 
     button = self.driver.find_element_by_xpath("PATH").is_displayed() 
     if button is False: 
      print("button is hidden. Test is passed") 

내가이 일을 할 수있는 방법에 어떤 제안을 ??

+4

루프가 필요합니까? 'if'는 루프를 시작하지 않습니다. – Matthias

+0

예. 따라서 행이 False이면 : -> 버튼이 표시되지 않고, 행이 참이면 버튼이 표시됩니다. 어느 쪽이든, 테스트가 유효합니다. – Bubbles

+1

귀하의 질문에 의해 매우 혼란 스러워요. – heinst

답변

0

어쩌면 숨겨진 row6이없고 예외가 발생했을 수 있습니다.

예외의 구문이 잘못되었습니다. 즉, 모든 예외를 catch 한 다음 NoSuchElementException 개체로 아무 작업도 수행하지 않습니다.

다음과 같은 의미입니까?

except NoSuchElementException: 
    #do something when no row6 found 
+0

구문 수정을 보내 주셔서 감사합니다. 그러나, 당신이 내 코드를 체크인하면 변수''는'try' 문 안에 저장됩니다.존재하지 않고'except :'에 추가되면, 셀레늄은 3 가지 다른 에러를 표시합니다. 1) InvalidSelectorException : 2) InvalidSelectorError : 3) SyntaxError : 표현식이 합법적 인 표현식이 아닙니다. 불행히도, 그것은 내 문제를 해결하지 않습니다. – Bubbles

0

내가 셀레늄을 모르지만, 당신이 그 일이 예상 여러 여기에 예외, 동일한 유형의 모든, 그리고도 있어야 할 것 같군요. 예를 들어 row.is_displayed()True으로 평가되면 예외는 없지만 예외가 발생합니다. 이는 rowNone이거나 다른 예기치 않은 결과 일 수 있음을 나타냅니다. 나는 docs을 간단히 살펴 봤지만 당장은 볼 수 없었다.

어쨌든 -이 문제를 디버깅하는, try-except 블록으로 코드의 다른 부분을 넣어보십시오

try: 
    button = self.driver.find_element_by_xpath(PATH) 
    if button.is_displayed(): 
     do stuff 
     try: 
      row = self.driver.find_element_by_xpath(<row6>) 
     except: # <-- Better if you test against a specific Exception! 
      print(" something is wrong with row! ") 
     try: 
      if row.is_displayed(): 
       do stuff 
      else: 
       do stuff 
     except: # <-- Better if you test against a specific Exception! 
      print(" something is wrong with using row!") 
except: # <-- Better if you test against a specific Exception! 
    button = self.driver.find_element_by_xpath("PATH").is_displayed() 
    if button is False: 
     print("button is hidden. Test is passed") 

을 또한 각 try-except 내부 코드의 최소 금액을 넣어하려고하면 예외가 어디 있는지 알 수 있도록 에서 오는.

+0

답변 해 주셔서 감사합니다. 온라인으로이 문제에 대한 솔루션을 연구 중입니다. Selenium에서 요소의 '보이지 않음'을 확인하는 것은 매우 일반적인 문제인 것처럼 보입니다. – Bubbles