2016-08-10 3 views
-1

Ich habe es mit einem Popup-Problem zu tun, das zufällig zu sein scheint, bevor ich auf eine Schaltfläche klicke. Ich möchte wissen, ob ich auf irgendeine Weise prüfen kann, ob das Element angezeigt wird, und darauf klicken. Wenn es nicht angezeigt wird, möchte ich, dass das Skript weiter ausgeführt wird. Mein aktuelles Skript erhält immer einen Fehler. Wenn das Popup angezeigt wird, wird mein Skript PERFECT ausgeführt. mein Fehler erfolgt auf mein Skript amPython Selen-Skript läuft weiter, wenn Element nicht gefunden wird

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

Hier ist ein Bild von meinem Fehler:

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 

Antwort

0

Eigentlich find_element_by_xpath gibt immer entweder Element oder Ausnahme auslöst, also wenn es Kein Element vom angegebenen Locator kann nicht ausgeführt werden is_displayed(). Sie sollten versuchen, find_elements_by_xpath statt und überprüfen Sie die Länge, wie unter Verwendung von: -

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

so fügen Sie einfach Ihre Bearbeitung auf mein Skript ?? –

+0

@Tonysanchez, ja du solltest dein Skript mit dieser Änderung bearbeiten ... :) –

+0

ich lasse dich wissen wie es jetzt geht !! Danke –

0

Versuchen folgende:

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

gerade versucht. hat nicht funktioniert. –

+0

Können Sie 'HTML' für die Zielseite freigeben? Offensichtlich, Problem nicht im Element mit zur Verfügung gestellt 'XPath' – Andersson

+0

ich benutze dies auf eine automatische Kasse nach dem Einloggen in meine Paypal, ein Pop-up gelegentlich herauskommen. –

Verwandte Themen