python+selenium淘宝登录(仅供学习使用)

1.常规操作:

import time
from selenium import webdriver
from selenium.webdriver import ActionChains
driver = webdriver.Chrome(executable_path='./chromedriver')
driver.maximize_window()
driver.get('https://login.taobao.com/')
zh = driver.find_element('id', 'fm-login-id')
pw = driver.find_element('id', 'fm-login-password')
btn = driver.find_element('xpath', '//*[@id="login-form"]/div[4]/button')
zh.send_keys('*****')
pw.send_keys('****')
btn.click()
time.sleep(0.2)

huakuai = driver.find_element('id', 'nc_1_n1z')
#动作链
action=ActionChains(driver=driver)
action.click_and_hold(huakuai)
for i in range(10):
    action.move_by_offset(10,0).perform()
    time.sleep(0.1)
btn.click()

  2.错误:(貌似是操作太快,浏览器还未刷新)

发生异常: ElementNotInteractableException
 
Message: element not interactable: [object HTMLSpanElement] has no size and location (Session info: chrome=111.0.5563.65)
解决办法:
1:添加time
time.sleep(2)

问题依旧存在

2.度娘上查询了一下,说的是元素被遮挡

试了半天,发现不得行

调试发现Span宽高都为0:

 


摸索了一整天终于发现问题所在,
点击登录之后,需要等待一小段时间,界面出现滑块,但是,该滑块控件实际是在一个iframe中,所以就需要将driver swich一下 (问题解决)

driver.switch_to.frame('baxia-dialog-content')

js = 'Object.defineProperty(navigator,"webdriver",{get:()=>false,});'
huakuai = WebDriverWait(driver, 100).until(
    EC.presence_of_element_located((By.ID, 'nc_1_n1z')))
driver.execute_script(js)
# 动作链
newaction=ActionChains(driver=driver)
newaction.move_to_element(huakuai)
newaction.click_and_hold(huakuai)
for i in range(5):
    newaction.move_by_offset(65, 0).perform()
    time.sleep(0.1)
newaction.release()

 切换窗口:

mydriver.switch_to.window(mydriver.window_handles[1])

 

 去除浏览器验证:

#去除浏览器识别
option = ChromeOptions()
option.add_experimental_option('excludeSwitches', ['enable-automation'])
option.add_experimental_option("detach", True)
script = 'Object.defineProperty(navigator, "webdriver", {get: () => false,});'
driver.execute_script(script)

 

posted @ 2023-03-16 15:18  嘿嘿11  阅读(435)  评论(0编辑  收藏  举报