2014-09-17 1 views
0

웹 기반 응용 프로그램의 일부로 고객은 docusign에서 계약서에 서명해야하며 초기 계약서가 생성됩니다.DocuSign - Selenium Python - "Sign" "Initial"요소

문서에서 일부 지역에서는 고객의 이니셜이 필요하고 일부 고객 서명이 필요합니다 (순서가 맞지 않음). 나는 다음을 할 수 있었다. 하지만 "요소가 보이지 않습니다"라는 메시지가 나타납니다. 나는 "여기에 이니셜"이있을 때 클릭이 "여기에 사인"으로 움직이고 있다고 생각합니다. 선택한 각 계약서마다 계속해서 변경됩니다. 이를 수용하기 위해 코드를 작성하려면 어떻게해야합니까? 저에게 알려주세요.

try: 

    self.driver.find_element_by_id("chkUserEsign").click() 
    time.sleep(5) 
    self.driver.find_element_by_id("ds_hldrBdy_dlgStart_startReview_btnInline").click() 

except NoSuchElementException as e: 
    print('retry in 10s.') 
    time.sleep(1) 

try: 
    self.driver.find_element_by_id("ds_hldrBdy_navnexttext_btnInline").click() 
except NoSuchElementException as e: 
    print('retry in 9s.') 
    time.sleep(1) 

try: 

    listofinitial = self.driver.find_elements_by_xpath("//input[@type='image' and @title='Initial Here']") 
    for i in listofinitial: 
     i.click() 
    self.driver.find_element_by_id("ds_hldrBdy_dlgAdoptSig_btnAdoptSignature_btnInline").click() 

    listofsign = self.driver.find_elements_by_xpath("//input[@type='image' and @title='Sign Here']") 
    for j in listofsign: 
     j.click() 


except NoSuchElementException as e: 
    print('retry in 5s.') 
    time.sleep(1)  

답변

0

클릭 기능은 지정된 고유 로케이터를 사용하여 HTML DOM에서 해당 요소를 찾을 수있는 경우 항상 요소를 클릭합니다. 절대 Xpath 또는 CSS Selector를 사용하지 않는 한 UI의 요소 위치가 무엇인지는 중요하지 않습니다. 귀하의 경우에는 '여기'또는 '여기에 서명하십시오'요소가 UI에 표시되고 '요소 보이지 않음'으로 인해 테스트 스크립트가 실패하기 때문에 두 가지 모두를 찾으려고한다고 가정합니다.

WebDriver에는 요소의 가시성을 검사하고 부울을 반환하는 'isDisplayed'함수가 있습니다. 클릭 동작을 수행하기 전에 두 로케이터의 가시성을 확인하는 것이 어떻습니까?

+1

감사합니다. Rishi.I 아래 코드를 사용하여 해결했습니다. listofinitial = self.driver.find_elements_by_xpath ("// input [@ type = 'image'및 @ title = 'Initial Here']") 인쇄 (listofinitial) 인쇄 (listofinitial [0]) time.sleep (3) . listofinitial [0] .click() self.driver.find_element_by_id ("ds_hldrBdy_dlgAdoptSig_btnAdoptSignature_btnInline")를 클릭() (3) listofinitial [1]에 대한 I time.sleep i.click() = 자기 listofsign .driver.find_elements_by_xpath ("// input [@ type = 'image'및 @ title = '여기에 서명하십시오]") for listofsign : j.click() – user2744620