Python:如何选中浏览器分裂的复选框?



一旦我将以下项目添加到购物车: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选中复选框?

提前感谢您,一定会投票/接受答案

需要指出的两件主要事情:

  • 为了避免计时问题,您需要在脚本中进行"显式等待">- 等待元素可见或存在,然后再继续下一步操作
  • 可以通过单击包含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()

相关内容

  • 没有找到相关文章

最新更新