2016-11-13 6 views
0

Я новичок в SOF. У меня проблема с заполнением формы входа в PayPal.Заполнение paypal express checkout selenium

Я хочу, чтобы мой скрипт заходил на страницу экспресс-оплаты PayPal, затем нажмите кнопку возврата платежа на сайт продавца и нажмите кнопку «Отправить».

На данный момент у меня есть это Я уже пробовал несколько методов, но я не могу заставить его работать. Он нажимает кнопку paypal checkout на сайте продавца, а затем отправляется на paypal, но он ничего не заполняет, а затем сбрасывает скрипт (chrome?) И закрывает хром.

results=browser.execute_script("window.location='"+cartURL+"'") 
checkBtn=browser.find_element_by_xpath("//div[@class='co-actionscart-bottom- actions checkout-buttons-wrapper clearfix checkout-paypal']//button[@class='co-btn_primary btn_showcart button-full-width button-ctn button-brd-sol button-brd adi-gradient-lightgrey paypal-button track btn btn-paypal btn-block']") 
print(checkBtn) 
checkBtn.click() 
time.sleep(sleeping) 
time.sleep(sleeping) 
time.sleep(sleeping) 
browser.switchTo().frame("injectedUl") 
inputelement = browser.find_element_by_name("login_email") 
inputelement.clear() 
inputelement.send_keys(cardNum) 
inputelement = browser.find_element_by_name("login_password") 
inputelement.clear() 
inputelement.send_keys(safeCode)` 
+0

Это действительно плохая идея безопасности мудр ... кроме того, что ваши локаторы действительно плохо и склонны к ошибкам. Если вы все еще хотите его решить, вам нужно выяснить, сбой Chrome, или ваш сценарий бросает исключение. – Moshisho

+0

Как я могу это сделать? в терминале ничего не отображается –

+0

ответ

0

После вы перешли на IFRAME "injectedUl", у вас есть #shadow-root под ним, который является своего рода хак JavaScript devs to encapsulate their implementation. чтобы получить элемент внутри их вам нужно что-то вроде:

htmlElement = driver.find_element_by_tag_name('html') 

def expand_shadow_element(element): 
shadow_root = driver.execute_script('return arguments[0].shadowRoot', element) 
return shadow_root 

shadow_root_under_frame = expand_shadow_element(htmlElement) 

Затем вы можете найти входы ваших ищут:

inputelement = shadow_root_under_frame.find_element_by_name("login_email") 

Надеется, что это помогает.

0

if debug: 
 
    print(d_()+z_("Debug")+o_("Product Count"+" : "+productCount)) 
 
    if (len(productCount) == 1) and (int(productCount) > 0): 
 
    results=browser.execute_script("window.location='"+cartURL+"'") 
 
    checkBtn=browser.find_element_by_xpath("//div[@class='co-actions cart-bottom-actions checkout-buttons-wrapper clearfix checkout-paypal']//button[@class='co-btn_primary btn_showcart button-full-width button-ctn button-brd-sol button-brd adi-gradient-lightgrey paypal-button track btn btn-paypal btn-block']") 
 
    print(checkBtn) 
 
    checkBtn.click() 
 
    htmlElement = driver.find_element_by_tag_name('html') 
 

 
    def expand_shadow_element(element): 
 
     shadow_root = driver.execute_script('return arguments[0].shadowRoot', element) 
 

 
    return shadow_root 
 

 
    shadow_root_under_frame = expand_shadow_element(htmlElement) 
 
    inputelement = shadow_root_under_frame.find_element_by_name("login_email") 
 
    inputelement.clear() 
 
    inputelement.send_keys(cardNum) 
 
    inputelement=browser.find_element_by_name("login_password") 
 
    inputelement.clear() 
 
    inputelement.send_keys(safeCode)

+0

Он закрывает браузер сразу –

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