如何随机选择随意选择的页面

时间:2018-03-17 05:51:12

标签: python selenium testing automation wildcard

我想点击电子商务网站中的添加到购物车按钮,我的问题是每个项目都有不同的按钮ID。我注意到id位于div。

我尝试选择一张外卡,因为每个项目的ID都不同。

addcart = driver.find_elements_by_css_selector("div[id*=\"addtocart-\"]")
addcart.click()

here is the sample code, i want to click the addtocart-49831, how can i click that button?

2 个答案:

答案 0 :(得分:1)

还有许多其他方法可以在不使用@id的情况下定位元素:

  • 通过文字:

    addcart = driver.find_element_by_xpath("//button[.='Add To Cart']")
    
  • 按按钮的类型:

    addcart = driver.find_element_by_xpath("//button[@type='submit']")
    
  • 按类名:

    driver.find_element_by_css_selector("div.add_to_cart_btn")
    

    driver.find_element_by_class_name("add_to_cart_btn")
    

请注意,在您的代码中,您使用find_elements...()获取元素,然后在此方法返回元素的列表时单击它。您需要使用find_element...()find_elements...()[0]代替

P上。 S.让我知道如果它不是你想要的,因为标题“随机点击一个随机选择的页面”与问题描述不匹配

答案 1 :(得分:0)

创建一个您想要点击的网址列表,然后随机选择一个并转到该网址。然后选择css_selectors并随机选择一个进行单击。这样的事情: -

driver = webdriver.Firefox()
urls = ['url1','url2','url3']
url = urls[randint(0, len(urls) - 1)]

driver.get(url) # <- This will take you to a random page

current_page = driver.current_url
i=0
while i<10: # <- Create your loop as you want
    try:
        selectors = driver.find_elements_by_css_selector('.content-link.spf-link.yt-uix-sessionlink.spf-link') #<- get the css_selectors

        l = selectors[randint(0, len(selectors) - 1)] #<- Select a random selector

        l.click()
        #  Write your 
        #  code here
    except:
        continue