• python中应对各种机制


    延迟机制

    1. from selenium.webdriver.support.wait import WebDriverWait
    2. from selenium.webdriver.support import expected_conditions as EC
    3. from selenium.webdriver.common.by import By
    4. driver = webdriver.Firefox()
    5. driver.get('https://www.guiderank-app.com/goods-search?categoryId=14606257169901630856')
    6. my_element = WebDriverWait(driver, 10).until(
    7. EC.presence_of_element_located((By.XPATH, '//*[@id="app"]/div[2]/div[3]/div/div[2]/div/div[1]/div[2]')))
    8. # elemen=driver.find_element(By.XPATH,'//div[contains(@class,"el-dialog__wrapper")]/*[contains(@class,"el-dialog myDialog")]/*[contains(@class,"el-dialog__body")]/*[contains(@class,"newuser")]/span').text
    9. print(my_element)

    新框架:

    1. browser=webdriver.Firefox()
    2. browser.get("https://mail.qq.com/")
    3. browser.switch_to.frame("login_frame")#切换到内嵌iframe
    4. browser.find_element_by_class_name("inputstyle").send_keys("xxxxx")
    5. pyautogui.hotkey('Tab')
    6. browser.find_element_by_class_name("inputstyle.password").send_keys("xxxxx")
    7. browser.switch_to.default_content()#回到默认的iframe
    8. url = 'http://daka.95155.com/login.html'
    9. # url ='https://login.51job.com/login.php?loginway=0&isjump=0&lang=c&from_domain=i&url='#调试代码
    10. driver.get(url) # 加载网址
    11. time.sleep(5)
    12. #调试代码
    13. # elemen=driver.find_element(By.XPATH,"//div[@class='hands-main']").text # 点击账户登录
    14. # driver.find_element(By.XPATH,
    15. # ".//div[@class='btnbox']/*[contains(@data-sensor-id,'sensor_login_signinButton')]").click() # 点击账户登录
    16. # driver.find_element(By.XPATH,
    17. # "//div[@class='el-dialog__body']/div[@class='loginBtnWrap']/button[@class='el-button loginBtn el-button--primary']/span[text()=\"登录\"]").click() # 点击账户登录
    18. # elemen=driver.find_element(By.XPATH,
    19. # "//div[@class='el-dialog__body']/div[@class='loginBtnWrap']/button[@class='el-button loginBtn el-button--primary']/span[text()=\"登录\"]") # 点击账户登录
    20. driver.switch_to.frame('businesslineIframe')
    21. my_element=driver.find_element(By.XPATH,
    22. "//div[@class='el-dialog__body']/div[@class='newuser']/span") # 点击账户登录
    23. print(my_element)
    24. driver.find_element(By.XPATH,"//div[@class='el-dialog__body']/div[@class='loginBtnWrap']/button[@class='el-button loginBtn el-button--primary']/span[text()=\"登录\"]").click() # 点击账户登录

    代码对比:

    1. # 已报错代码:
    2. driver.find_element_by_xpath(
    3. ".//div[@class='loginBtnWrap']/*[@class='el-button loginBtn el-button--primary']").click() # 点击密码登录
    4. # 升级后写法
    5. driver.find_element(By.XPATH, "//div[@class='loginBtnWrap']/*[@class='el-button loginBtn el-button--primary']"). \
    6. send_keys(Keys.ENTER) # .click() # 点击账户登录
    7. # 最新反扒(延迟+CSS框架)
    8. url = 'http://daka.95155.com/login.html'
    9. # url ='https://www.fengyupt.com/'#调试代码
    10. driver.get(url) # 加载网址
    11. time.sleep(1)
    12. driver.switch_to.frame('businesslineIframe')
    13. # my_element = WebDriverWait(driver, 10).until(EC.presence_of_element_located((By.XPATH, '//*[@id="app"]/div[2]/
    14. # div[3]/div/div[2]/div/div[1]/div[2]')))
    15. driver.find_element(By.XPATH, ".//div[contains(@class,'el-tabs__nav is-top is-stretch')]/div[@class='el-tabs__item "
    16. "is-top is-active'").send_keys(Keys.ENTER) # .click() # 点击账户登录
    17. #密码登录标签点击失败
    18. driver.find_element(By.XPATH, "//div[@class='el-tabs__nav is-top is-stretch']/div[2]").click() # 密码登录
    19. # js点击密码登录标签
    20. js = 'document.getElementsByClassName("el-tabs__item is-top")[1].click()'
    21. js1 = 'document.getElementById("tab-password").click()'
    22. driver.execute_script(js1)
    23. time.sleep(0.3)
    24. name = ''
    25. word = ''
    26. ''''''
    27. #直接赋值失败
    28. WebDriverWait(driver, 10).until(EC.presence_of_element_located((By.XPATH, "//div[@class='el-form-item__content']/"
    29. "div[@class='el-input el-input--prefix el-input--suffix']/input[@class='el-input__inner']"))).send_keys(name)
    30. # 通过tab键盘滑动输入账户密码
    31. driver.switch_to.active_element.send_keys(Keys.TAB)
    32. time.sleep(0.3)
    33. driver.switch_to.active_element.send_keys(name)
    34. time.sleep(0.3)
    35. driver.switch_to.active_element.send_keys(Keys.TAB)
    36. time.sleep(0.3)
    37. driver.switch_to.active_element.send_keys(word)
    38. time.sleep(0.3)

  • 相关阅读:
    【高等の数学】e^-3x的一阶导数
    面试经典150题——矩阵置零
    宇视网络视频录像机人机实况画面偏色排查步骤
    kubeadm部署v1.26.1
    Eureka Server 实现在线扩容
    微信小程序学习
    UOS Deepin Linux 安装 anaconda
    用 VS Code 搞Qt6:使用 PySide 6
    TypeScript接口与泛型的使用
    前端现场笔试题
  • 原文地址:https://blog.csdn.net/u010719791/article/details/126681225