2016-08-10 2 views
-1

Я имею дело с всплывающей проблемой, которая кажется случайной, прежде чем я нажму кнопку. Я хочу знать, есть ли способ проверить, отображается ли этот элемент и щелкнуть его, если он не отображается, я хочу, чтобы он продолжал выполнение скрипта. мой текущий скрипт продолжает получать ошибку. Когда отображается всплывающее окно, мой скрипт запускает PERFECT. моя ошибка происходит на моем сценарии наСценарий Selenium Python для продолжения работы, если элемент не найден

onetouch = self.driver.find_element _by_xpath(""). 

Вот картина моей ошибки:

enter image description here

 self.driver.get(redirecturl) 
     self.driver.implicitly_wait(180) 
     login_frame = self.driver.find_element_by_name('injectedUl') 
     # switch to frame to access inputs 
     self.driver.switch_to.frame(login_frame) 
     # we now have access to the inputs 
     email = self.driver.find_element_by_id('email') 
     password = self.driver.find_element_by_id('password') 
     button = self.driver.find_element_by_id('btnLogin') 



     # input your email and password below 
     email.send_keys('') 
     password.send_keys('') 
     button.click() 
     ############# 

     onetouch = self.driver.find_element_by_xpath(".//*[@id='memberReview']/div[2]/div/div/div[2]/div[1]/div[1]/a") 
     if onetouch.is_displayed(): 
      time.sleep(2) 
      onetouch.click() 
     else: 
      print "onetouch not present....continuing script" 
     button2 = self.driver.find_element_by_id('confirmButtonTop') 
     button2.click() 
     button3 = self.driver.find_element_by_name('dwfrm_payment_paypal') 
     # if you want to test the program without placing an order, delete the button3.click() below this......... 
     button3.click 

ответ

0

На самом деле find_element_by_xpath всегда возвращает либо элемент или бросает исключение, поэтому, если есть ни один элемент предоставленным локатором вы не можете выполнить is_displayed(). Вы должны попробовать использовать find_elements_by_xpath вместо этого и проверьте длину, как показано ниже: -

onetouch = self.driver.find_elements_by_xpath(".//*[@id='memberReview']/div[2]/div/div/div[2]/div[1]/div[1]/a") 

    if len(onetouch) > 0: 
     time.sleep(2) 
     onetouch[0].click() 
    else: 
     print "onetouch not present....continuing script" 
     ------- 
+0

так просто добавить правку в мой сценарий ?? –

+0

@Tonysanchez, да, вы должны отредактировать свой скрипт с этим изменением ... :) –

+0

плохо сообщите, как это происходит прямо сейчас! спасибо –

0

Попробуйте следующее:

from selenium.common.exceptions import NoSuchElementException 

try: 
    time.sleep(2) 
    self.driver.find_element_by_xpath(".//*[@id='memberReview']/div[2]/div/div/div[2]/div[1]/div[1]/a").click() 
except NoSuchElementException: 
    print "onetouch not present....continuing script" 
+0

просто попробовал. Не работает. –

+0

Можете ли вы поделиться «HTML» для целевой страницы? Очевидно, проблема не в элементе с предоставленным «XPath» – Andersson

+0

im, используя это при автоматической проверке после входа в мою paypal, всплывающее окно появляется. –

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