faisea 发表于 2020-3-22 22:47

[Python] 模拟登陆功能中ID的获取问题

想为某网页写一个实现模拟登陆功能的小程序,但是卡在这一步,显示一直找不到id,请大佬帮忙看下,这账号框和密码框应用什么方式获取,谢谢!
Pycharm报错如下:
selenium.common.exceptions.NoSuchElementException: Message: no such element: Unable to locate element: {"method":"selector":"signInName"}


from selenium import webdriver
import time

login_page = 'https://upsb2c.b2clogin.com/upsb2c.onmicrosoft.com/oauth2/v2.0/authorize?p=b2c_1a_forcepasswordreset_signup_signin&client_id=f15fa43e-2af5-4a3e-b6a2-dcdd1e9bf8a7&response_mode=form_post&response_type=id_token&scope=openid&redirect_uri=https://fgv.ups-scs.com/loginservicesfgv/msaadLogOn.nfdo'


broswer = webdriver.Chrome()
broswer.get(login_page)
print(broswer.page_source)


broswer.find_element_by_id('signInName').send_keys('abc@163.com')
broswer.find_element_by_id('password').send_keys('123456')

submit.click()

cookies = webdriver.get_cookies()
time.sleep(3)
broswer.close()

1170 发表于 2020-3-22 23:35

寻找元素前sleep一下,或者使用slenium的显示等待,另楼主的点击按钮没有获取

Javajsc 发表于 2020-3-23 00:01

WebDriverWait(driver, 10).until(EC.presence_of_element_located((By.ID, "signInName")))
这个页面是两个html合成的,get后显示等待一下就好了

倾情 发表于 2020-3-23 08:26

这个页面html的id可能是通过js生成的,所以你需要执行js文件,如果你通过请求的网页中有这个数据的话可以通过正则分离出来。

faisea 发表于 2020-3-23 11:36

1170 发表于 2020-3-22 23:35
寻找元素前sleep一下,或者使用slenium的显示等待,另楼主的点击按钮没有获取

还真是这个问题,sleep了40秒才成功:curse:

faisea 发表于 2020-3-23 11:39

Javajsc 发表于 2020-3-23 00:01
WebDriverWait(driver, 10).until(EC.presence_of_element_located((By.ID, "sig ...

可以了,谢谢老哥~
另外问下,如果仅仅用requests模拟登陆,只能用sleep等待吗?

faisea 发表于 2020-3-23 11:46

倾情 发表于 2020-3-23 08:26
这个页面html的id可能是通过js生成的,所以你需要执行js文件,如果你通过请求的网页中有这个数据的话可以通 ...

谢谢回复,用楼上等待的方法解决了~
页: [1]
查看完整版本: [Python] 模拟登陆功能中ID的获取问题