中国电信PC站登陆方式有好几种(手机/固话/宽带/其他/扫码登录),我需要手机登陆,点击手机。
然后通过chrome的copy xpath快速找到了用户名、密码的输入元素,但是使用chrome的验证码输入框的元素的copy xpath却始终定位不到。
chrome给出的xpath是这样的:
//*[@id="cellPhoneValidateId"]
一直以为xpath表达式不正确,搞了好长时间。
最后决定看看selenium返回的源码里面到底是怎样的。
browser = webdriver.Chrome() #浏览页面 browser.get('http://xxxxxxxxxxxxxxx') #选择‘手机’登陆方式 login_form = browser.find_element_by_xpath('//*[@id="menu1"]/li[1]').click() #把之后的页面源码保持成文件 with open('s.html','w') as f: f.write(browser.page_source)
在里面搜索”cellPhoneValidateId”,根本就没找到,然后用chrome打开s.html,找到验证码输入框copy xpath确是:
/html/body/div[2]/div[2]/div/div[2]/form/p[2]/input
所以。。。。想说的是尽量以selenium访问到的源码来分析。。。。
———————————————————————————–
1.如果你想查找ul下的li中符合某一标准的那个li。例如,你想查找所有li中内容为海贼王的那个li:
li = browser.find_element_by_xpath("//ul/li[contains(text(),'海贼王')]")
参考:
https://www.seleniumhq.org/docs/03_webdriver.jsp#introducing-the-selenium-webdriver-api-by-example/