2017-02-08 13 views
4

Ich bin in den Warenkorb Funktionalität auf WellGosh.com mit Selenium auf Python.Fehler beim Klicken auf eine Schaltfläche mit Selenium

Ich habe den Code bekommen die richtige Größe in den Warenkorb und loggen Sie sich in mein Konto und an die richtige Lieferadresse, aber wenn ich versuche, die Versandart (fedex) zu bestätigen, wird es mich nicht auf die Fortsetzung klicken Taste. Hier

ist ein Beispiel für den Code zur Kasse:

def Checkout(): 
#brings you to your cart 
driver.get('https://wellgosh.com/checkout/cart') 

#clicks to checkout 
checkout=driver.find_element_by_xpath('//*[@id="shopping-cart-table"]/tfoot/tr/td/div[2]/a') 
checkout.click() 

#Log in 
login=driver.find_element_by_xpath('//*[@id="login-email"]') 
login.send_keys(e_mail) 
password=driver.find_element_by_xpath('//*[@id="login-password"]') 
password.send_keys(Pass) 
LogIn=driver.find_element_by_xpath('//*[@id="checkout-step-login"]/div/div[2]/div/button') 
LogIn.click() 
cont=driver.find_element_by_xpath('//*[@id="billing-buttons-container"]/button') 
cont.click() 
driver.implicitly_wait(100) 
element = driver.find_element_by_xpath('//*[@id="shipping-method-buttons-container"]/button') 
element.click() 

ich diese Störung erhalte:

selenium.common.exceptions.ElementNotVisibleException: Message: element not visible

Dies ist der Ausschnitt aus dem HTML-Code:

</script> 
    </div> 
    <div class="buttons-set" id="shipping-method-buttons-container"> 
     <p class="back-link"><a href="#" onclick="checkout.back(); return false;"><i class="fa fa-chevron-left plain"></i>Back</a></p> 
     <button type="button" class="button btn-continue" onclick="shippingMethod.save()">Continue</button> 
     <span id="shipping-method-please-wait" class="please-wait zoooooom" style="display:none;"> 
      <i class="fa fa-cog fa-spin plain"></i> 
     </span> 
    </div> 
</form> 
+0

Also, wenn die ID für das übergeordnete Element der weiterhin Taste „billing-Tasten-Container“, wobei diese Identifikation ist in Ihr HTML-Code? –

Antwort

-2

Wenn Sie Probleme beim Klicken auf die Schaltfläche haben, warum führen Sie nicht das Javascript aus, das sich im Attribut 'onclick' dieser Schaltfläche befindet? Zum Beispiel in der HTML-Schnipsel, anstatt das Element zu finden, und klicken Sie, könnten Sie tun:

driver.execute_script ("shippingMethod.save()")

Hinweis, wenn Sie diese Seite iFrames verwendet, Sie müssen den Treiber auf den entsprechenden iFrame umschalten, bevor Sie die untergeordneten Elemente darin finden/auswählen können.

+0

Es ist eine sehr schlechte Übung, bestimmte Seiten-API-Methoden direkt aufzurufen, anstatt die Benutzeroberfläche zu verwenden. – cezarypiatek

+1

Das ist wahr, seltsam, es gibt eine Element nicht sichtbare Ausnahme. Dies bedeutet normalerweise, dass auf etwas anderes geklickt werden muss, um das Element sichtbar zu machen. Hat eines der Elternelemente, die nicht im Snippet enthalten sind, eine Anzeige von "none"? – Psionatix

0

Versuchen Code unten und lassen Sie mich wissen, ob es Ihr Problem gelöst:

from selenium.webdriver.common.by import By 
from selenium.webdriver.support.ui import WebDriverWait as wait 
from selenium.webdriver.support import expected_conditions as EC 

wait(driver, 10).until(visibility_of_element_located((By.XPATH, '//button[text()="Continue"]'))).click() 
Verwandte Themen