testSelenium.py 2.9 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384
  1. import os
  2. import random
  3. import re
  4. import time
  5. from selenium import webdriver
  6. from selenium.webdriver.chrome.service import Service
  7. from selenium.webdriver.common.by import By
  8. from selenium.webdriver.common.keys import Keys
  9. from selenium.webdriver.common.proxy import Proxy
  10. from selenium.webdriver.support import expected_conditions as EC
  11. from selenium.webdriver.support.ui import WebDriverWait
  12. def startChrome():
  13. """启动Chrome浏览器,需要指定驱动的位置
  14. """
  15. chrome_driver = os.path.abspath(r"C:\Program Files (x86)\Google\Chrome\Application\chromedriver.exe")
  16. os.environ["webdriver.chrome.driver"] = chrome_driver
  17. webdriver.DesiredCapabilities.CHROME['proxy'] = {
  18. "httpProxy": "182.90.14.241:80",
  19. "sslProxy": "59.78.160.248:8080",
  20. "noProxy": None,
  21. "proxyType": "MANUAL",
  22. "autodetect": False
  23. }
  24. driver = webdriver.Chrome(chrome_driver)
  25. wait = WebDriverWait(driver, 10)
  26. # login
  27. driver.get('https://www.mouser.cn/MyMouser/MouserLogin.aspx')
  28. wait.until(EC.visibility_of_element_located((By.ID, 'ctl00_ContentMain_login_login_UserName')))
  29. wait.until(EC.visibility_of_element_located((By.ID, 'ctl00_ContentMain_login_login_Password')))
  30. wait.until(EC.element_to_be_clickable((By.ID, 'ctl00_ContentMain_login_login_LoginButton')))
  31. name_el = driver.find_element(By.ID, 'ctl00_ContentMain_login_login_UserName')
  32. name_el.send_keys('_mouser_')
  33. pwd_el = driver.find_element(By.ID, 'ctl00_ContentMain_login_login_Password')
  34. pwd_el.send_keys('select123')
  35. time.sleep(random.randint(1, 3))
  36. btn_el = driver.find_element(By.ID, 'ctl00_ContentMain_login_login_LoginButton')
  37. btn_el.click()
  38. wait.until(lambda d: d.current_url == 'https://www.mouser.cn/MyMouser/AccountSummary.aspx')
  39. # index
  40. wait.until(EC.element_to_be_clickable((By.ID, 'ctl00_Header2_RepeaterNav_ctl00_hyperHeaderNav')))
  41. time.sleep(random.randint(1, 3))
  42. btn_el = driver.find_element(By.ID, 'ctl00_Header2_RepeaterNav_ctl00_hyperHeaderNav')
  43. btn_el.click()
  44. wait.until(lambda d: d.current_url == 'http://www.mouser.cn/Electronic-Components/')
  45. # category home
  46. wait.until(EC.element_to_be_clickable((By.CLASS_NAME, 'SearchResultsSubLevelCategory')))
  47. time.sleep(random.randint(1, 3))
  48. btn_el = driver.find_element(By.CLASS_NAME, 'SearchResultsSubLevelCategory')
  49. btn_el.click()
  50. wait.until(lambda d: re.match('.+\/_\/.+', d.current_url))
  51. # list
  52. time.sleep(random.randint(1, 3))
  53. driver.refresh()
  54. cmp_el = driver.find_element(By.CSS_SELECTOR, ".mfrDiv a")
  55. time.sleep(random.randint(1, 3))
  56. cmp_el.click()
  57. wait.until(EC.element_to_be_clickable((By.ID, 'ctl00_ContentMain_btn1')))
  58. # detail
  59. print(driver.current_url)
  60. print(driver.page_source)
  61. driver.close()
  62. driver.quit()
  63. driver = None
  64. if __name__ == '__main__':
  65. startChrome()