python selenium问题求教

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了python selenium问题求教相关的知识,希望对你有一定的参考价值。

问题:第三方网站,注册用户界面,自动化测试,自动填写手机号码后,点击获取验证码,提示号码未注册,在element里出现一个新id,名为errorxxx(名字记不住了)。如果是注册过的号码就没有出现,会直接发送验证吗。
需求:我现在想加一个判断,如果出现这个新id就不管,继续运行自动化测试,清空输入框,进行下一个号码验证,如果发送了验证吗,则需要把自动输入的电话保存到另外的文件里,请大神赐教怎么实现用Python.
注:本人Python菜鸟,刚接触

参考技术A

你的主要问题是想知道这个新ID到底有没有出现吧?点了之后去获取那个ID, 如果没有相应元素会抛出异常,把这个动作try起来就可以了,  就像这样

try:
    driver.find_element_by_id('errorxxx')
    # continue next phone number
except NoSuchElementException:
    # write the phone number to file

追问

你好 try和while循环怎么搭配 出来结果不是我想要的

本回答被提问者和网友采纳
参考技术B 这个很简单啊,用个捕获异常的操作就可以了追答

有没有原网页地址

有没有原网页地址

参考技术C 你能实现短信验证码的自动获得和填写吗?
一般更好的方式是内置几个不需要验证码的测试账号。

python模拟登录博客园(附:问题求教)

经过分析,博客园登录时采用了JSEncrypt加密,因此登录请求时要用密文,涉及字段如下

input1:用户名对应的密文

input2:密码对应的密文

登录请求链接https://passport.cnblogs.com/user/signin

技术分享
 1 import urllib
 2 import http.cookiejar
 3 import json
 4 
 5 cookie = http.cookiejar.CookieJar()
 6 cookie = http.cookiejar.MozillaCookieJar(cookie.txt)
 7 handler = urllib.request.HTTPCookieProcessor(cookie)
 8 opener = urllib.request.build_opener(handler)
 9 jsondata = {
10     "input1": "xxxxxxxxxxxxxxxxxxxx",
11     "input2": "xxxxxxxxxxxxxxxxxxxx",
12     "remember": "false"
13 }
14 postdata = bytes(json.dumps(jsondata), utf8)
15 posturl = https://passport.cnblogs.com/user/signin
16 heads = {
17     "Accept": "application/json, text/javascript, */*; q=0.01",
18     "Accept-Encoding": "gzip, deflate",
19     "Accept-Language": "zh-CN,zh;q=0.8",
20     "Connection": "keep-alive",
21     "Content-Type": "application/json; charset=UTF-8",
22     "Cookie": "UM_distinctid=15ada3078c4464-03af923f0903eb-3e64430f-1fa400-15ada3078c5357; pgv_pvi=4363802624; Hm_lvt_cec7b3b7ecb170891406ea59237c9168=1491961611; __gads=ID=9acae56062d760d7:T=1493871262:S=ALNI_Mbt7tJwbA5wr1buvothVjazLbzHfg; _ga=",
23     "Host": "passport.cnblogs.com",
24     "Origin": "https://passport.cnblogs.com",
25     "Referer": "https://passport.cnblogs.com/user/signin?ReturnUrl=https%3A%2F%2Fwww.cnblogs.com%2F",
26     "User-Agent": "Mozilla/5.0 (Windows NT 10.0; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/50.0.2661.102 Safari/537.36",
27     "VerificationToken": "IbayEnA2AtuRpDkB7WVJBr3d0GNPJ8TF9bKPDU-tiO1FQbFu8o3MTlDx_lliTm50c8bKGWRuM6GJJn4Pd_v19c24h5I1u9f2NrO5WZ7OUtJ0U22K0UDREpHArcliER1yPL_qC_sx4HwnHJywiudTPjnuuJez1LXMYVDzRV9PxArSh7MqvidX1xU1",
28     "X-Requested-With": "XMLHttpRequest"
29 }
30 request = urllib.request.Request(posturl, postdata, headers=heads)
31 
32 response = opener.open(request)
33 print(response.read().decode("utf8"))
34 # # 将cookie持久化到文件
35 cookie.save(ignore_discard=True, ignore_expires=True)
36 # 查看下cookie里的信息
37 # for item in cookie:
38 #     print(‘Name = ‘ + item.name)
39 #     print(‘Value = ‘ + item.value)
40 # 登录成功才能访问管理页面
41 response = opener.open("https://i.cnblogs.com/")
42 print(response.read().decode("utf8"))
43 
44 # 开始刷评论
45 comment = bytes(json.dumps({"blogApp": "wujf",
46                             "postId": 6475097,
47                             "body": "xxxxxxxxxxxx",
48                             "parentCommentId": 0
49                             }), utf8)
50 
51 response = opener.open(
52     "http://www.cnblogs.com/mvc/PostComment/Add.aspx", comment)
53 #返回信息{"Id":0,"IsSuccess":false,"Message":"无效的postId!","Data":null}    
54 print(response.read().decode("utf8"))
View Code

提交评论的链接为http://www.cnblogs.com/mvc/PostComment/Add.aspx

请求json如下

{"blogApp": "wujf",
"postId": 6475097,
"body": "xxxxxxxxxxxx",
"parentCommentId": 0
}

但是不知道为什么博客园会一直返回

{"Id":0,"IsSuccess":false,"Message":"无效的postId!","Data":null}

另:环境python3.5

如果有折腾出来的兄弟,欢迎留言指点!





以上是关于python selenium问题求教的主要内容,如果未能解决你的问题,请参考以下文章

为啥不可点击,但 execute_script 有意义。 href 中的 Python、Selenium、JS [重复]

Python如何实现自动登录和下单的脚本,请看selenium的表演

Python WebDriver自动化测试

爬虫&Selenium&ChromeDriver

Selenium3+python自动化(3.7版本)-chrome67环境搭建

selenium2+python自动化1-操作浏览器