2014-09-17 3 views
0

В рамках нашего веб-приложения Клиент должен подписать контракт в docusign, а затем сформирован первоначальный контракт.DocuSign - Selenium Python - «Sign» «Начальный» элемент

В документе, в некоторых местах требуется инициал клиента, а в некоторых местах требуется подпись клиента (это не в порядке). Я смог сделать следующее. Но я получаю сообщение «Элемент не видно». Думаю, клик переместится на «Sign here», когда есть «Initial here». Для каждого выбранного контракта это меняется. Как написать свой код, чтобы это учесть? Пожалуйста, дайте мне знать.

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. В вашем случае я предполагаю, что элемент «Initial Here» или «Sign Here» отображается в пользовательском интерфейсе, и вы пытаетесь найти оба из-за сбоя тестового сценария из-за «Элемента незаметного»

В WebDriver есть функция 'isDisplayed', которая проверяет видимость элемента и возвращает логическое значение, почему бы вам не проверить видимость обоих локаторов перед выполнением действия click.

+1

Thanks Rishi.I решил использовать этот код. listofinitial = self.driver.find_elements_by_xpath ("// input [@ type = 'image" и @ title =' Initial Here '] ") print (listofinitial) print (listofinitial [0]) time.sleep (3) . listofinitial [0] .click() self.driver.find_element_by_id ("ds_hldrBdy_dlgAdoptSig_btnAdoptSignature_btnInline") нажмите() time.sleep (3) для я в listofinitial [1]: i.click() listofsign = само .driver.find_elements_by_xpath ("// input [@ type = 'image" и @ title =' Sign Here '] ") для j в listofsign: j.click() – user2744620

 Смежные вопросы

  • Нет связанных вопросов^_^