簡體   English   中英

Python:如何使用Browser splinter選中復選框?

[英]Python: How to check off a checkbox with Browser splinter?

一旦我將以下項目添加到購物車: http//www.supremenewyork.com/shop/accessories/wau85w4km/cxv3ybp1w並轉到結帳頁面: https//www.supremenewyork.com/checkout ,有一個條款和條件復選框,我試圖用Browser's splinter檢查,但我無法這樣做:

例如,嘗試了以下但是都遇到了錯誤:

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檢查復選框?

提前謝謝你,一定會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()

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM