我正在使用Selenium模拟Chrome浏览器的登录。登录页面上有“滑块”按钮,需要拖动它才能完成登录过程。
奇怪的是,如果我使用driver.get(page)
打开网页。然后,即使我手动输入用户名,密码并拖动滑块,滑动验证码也将始终失败。
我试图添加用户代理,但没有帮助。 还有其他办法吗?我知道我们可以添加用户数据来跳过这部分,但我只想先弄清楚。
如果您尝试多次登录,将显示滑块验证码。该网页似乎只是检测到您正在使用脚本登录。
该错误将类似于:“操作,验证失败。请重新刷新”。然后,我使用driver.find_element_by_xpath("//*[@id='nocaptcha']/div/span/a").click()
刷新滑块。
谢谢。
driver = webdriver.Chrome()
driver.get("https://login.taobao.com/member/login.jhtml?spm=a21bo.2017.754894437.1.5af911d95pqPfs&f=top&redirectURL=https%3A%2F%2Fwww.taobao.com%2F")
action = ActionChains(driver)
login()
def login():
driver.find_element_by_class_name("login-switch").click()
driver.find_element_by_id('TPL_username_1').clear()
driver.find_element_by_id('TPL_username_1').send_keys('xxx')
driver.find_element_by_id('TPL_password_1').clear()
driver.find_element_by_id('TPL_password_1').send_keys("xxx")
time.sleep(1.5)
# driver.find_element_by_id('J_SubmitStatic').click()
Slider()
def Slider():
#Sliding verification code
while True:
try:
slip=driver.find_element_by_xpath("//*[@id='nc_1_n1z']")
action.click_and_hold(slip).perform()
action.move_by_offset(150,0)
time.sleep(0.8)
action.move_by_offset(148,0)
action.release().perform()
time.sleep(2)
text = driver.find_element_by_xpath("//*[@id='nc_1__scale_text']/span")
if text.text.startswith("请在下方"):
print("Successful")
break
if text.text.startswith("请点击"):
print("Successful")
break
if text.text.startswith("请按住"):
print("Failed. Try again")
continue
except Exception:
##Error occurs, click the "Refresh" button to refresh the sliding verification code again
driver.find_element_by_xpath("//*[@id='nocaptcha']/div/span/a").click()
driver.find_element_by_id('J_SubmitStatic').click()