python selenium 利用chrome copy xpath元素定位经验

中国电信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/

python + selenium相关事件和元素定位

上一篇
下一篇