2017-11-30 1 views
5

カートに以下の商品を追加したら:http://www.supremenewyork.com/shop/accessories/wau85w4km/cxv3ybp1wチェックアウトページ:https://www.supremenewyork.com/checkoutに、私がBrowser’s splinterでチェックアウトしようとしている利用規約のチェックボックスがありますが、それはできません:Python:ブラウザの破片でチェックボックスをオフにするにはどうすればいいですか?

以下を試みましたが、すべてエラーが発生しました:

from splinter import Browser 

browser = Browser("chrome") 
browser.find_by_id('order_terms').click()   
#Error: selenium.common.exceptions.WebDriverException: Message: unknown error 

browser.check('order[terms]').click() 
#Error: selenium.common.exceptions.ElementNotVisibleException: Message: element not visible 

browser.find_by_name('order[terms]').click() 
#Error: selenium.common.exceptions.ElementNotVisibleException: Message: element not visible 

私は間違っていますか? Browser splinterのチェックボックスをチェックするにはどうすればよいですか?

は、事前にありがとうと答えを指摘する

+0

実行しているエラーコードを投稿してください。 –

+1

@SuitBoyApps対応するエラーで元の解答を編集しました!応答を気遣う –

+0

これらの記事[エラー1](https://stackoverflow.com/questions/46026987/selenium-gives-selenium-common-exceptions-webdriverexception-message-unknown)、[エラー2] (https://stackoverflow.com/questions/27927964/selenium-element-not-visible-exception)。私は 'splinter'ライブラリに深く慣れていませんが、何が起こっているのかを推測しなければならないのであれば、第2のエラーは最初のエラーによって引き起こされると思います。 –

答えて

2

二つの主要なものの受け入れ/ upvoteするようにしてくださいます。

  • をタイミングの問題を回避するために、あなたはに必要なあなたの「明示的な待機」を持っていますスクリプト - 次の操作に進む前に要素が表示または存在するのを待つ
  • inputと他の補助要素を含むlabel要素全体をクリックすると、このチェックボックスをクリックすることができます。ここで

完全なコードです:ここでは

from splinter import Browser 

browser = Browser("chrome") 
browser.visit("http://www.supremenewyork.com/shop/accessories/wau85w4km/cxv3ybp1w") 
browser.wait_time = 10 

try: 
    browser.is_element_visible_by_css("input[name=commit]", 10) 
    browser.find_by_css("input[name=commit]").first.click() 

    browser.is_element_visible_by_css("a.checkout", 10) 
    browser.find_by_css("a.checkout").first.click() 

    browser.is_element_present_by_css("label.terms", 10) 
    browser.find_by_css('label.terms').click() 
finally: 
    browser.quit() 

、メインページに行く作業コードでスクロールして第三製品にナビゲートし、カートに追加し、チェックアウト最終的にtime.sleep()の利用規約に同意した場合、結果を確認するだけです。

from splinter import Browser 

browser = Browser("chrome") 
browser.visit("http://www.supremenewyork.com/shop") 
browser.wait_time = 10 

try: 
    # open a product 
    browser.is_element_visible_by_css("#shop-scroller > li > a", 10) 
    browser.find_by_css("#shop-scroller > li > a")[2].click() 

    # add to cart 
    browser.is_element_visible_by_css("input[name=commit]", 10) 
    browser.find_by_css("input[name=commit]").first.click() 

    # checkout 
    browser.is_element_visible_by_css("a.checkout", 10) 
    browser.find_by_css("a.checkout").first.click() 

    # accept terms and conditions 
    browser.is_element_present_by_css("label.terms", 10) 
    browser.find_by_css('label.terms').click() 

    import time 
    time.sleep(10) 
finally: 
    browser.quit() 
+0

感謝しています!しかし、あなたは次のことを試しましたか?カートに以下の項目を追加してください:http://www.supremenewyork.com/shop/accessories/wau85w4km/cxv3ybp1wそしてチェックアウトページ:https://www.supremenewyorkに行きます。com/checkoutには、利用規約のチェックボックスがあり、これはブラウザのスプラインでチェックを入れようとしています。なぜなら、私はその試みをしましたが、それでもなお動かないからです。 –

+0

前のコメントを見たかどうか確認してください。前もって感謝します! –

+0

@JoKoああ、申し訳ありませんが、最初のコメントを逃した。更新された答えをチェックしてください。ちょうど私のために働くものをそのまま追加してください。もしあなたがそれに問題があるなら教えてください。ありがとう。 – alecxe

関連する問題