2016-08-21 3 views
0

안녕하세요, 저는 셀렌을 배우려고 노력해 왔습니다.Python Serenium Detection Error?

내가 가지고있는 문제는 요소가 감지되지 않는다는 것입니다. 내가 작업하고있는 HTML 코드는 바로 여기 https://gyazo.com/a76608d4c4e9fc3bd29412436604c173로 강조 표시됩니다. 그 코드 줄은 내 프로그램을 멈추고 오류 https://gyazo.com/72fc72e6488578c9c2a50b71311602c5을 내게 주었다. 때로는 더 경계와 주석 형태 코멘트 형식 사이를 전환하기 때문에

내가 텍스트 영역 클래스에 대한 감지 사용하고 코드는

comment=driver.find_element_by_xpath("//form[@class='comment-form no-border-top']/div/*[1]") or driver.find_element_by_xpath("//form[@class='comment-form']/div/*[1]") 

입니다.

제 아이디어는 조건부 할당 연산자를 사용하여 if (comment! = none)를 확인하는 것입니다 : 뭔가를해야하지만, 제 생각에는 파이썬이 이것을 허용하지 않습니다.

내 제안 xpath는 무엇을해야하며 내 xpath는 신뢰할 수있는 방법인지 여부에 대한 제안 사항은 무엇입니까?

+0

HTML 코드와 오류 메시지를 링크 된 이미지가 아닌 질문의 텍스트로 추가하십시오. 또한 내가 의도 한 것이라고 생각하는 부분에 대한 코드를 편집했습니다. – mhawke

+0

'comment = foo() 또는 bar()'를 실제로 사용한다면,'comment'는 [truthy] (https://www.udacity.com/wiki) 사이의 부울'또는'의 결과가 될 것입니다/cs258/truthness-in-python) 두 함수 호출 값. –

답변

0

해결하려는 문제가 실제로 조건부 할당 인 경우 알고 싶은 두 가지가 있습니다.

첫 번째

은 당신 수행

경우 (주석 = 없음!)

그냥 이런 식으로 할 필요가 :

comment = Foo() 
if comment is None: 
    comment = Bar() 

두 번째 , 어쩌면 당신이 하려고 시도comment을 지정하면 첫 번째 호출은 erro를 throw합니다 r보다는 단지 None. 그렇다면 try을 사용해보세요.

from selenium.common.exceptions import NoSuchElementException 
try: 
    comment = driver.find_element_by_xpath("//form[@class='comment-form no-border-top']/div/*[1]") 
except NoSuchElementException: 
    comment = driver.find_element_by_xpath("//form[@class='comment-form']/div/*[1]")