此处整合两篇文章 第一部分是基本的定位方法;第二部详细介绍了通过XPATH定位(.find_element_by_xpath).
第一部分:
下面我将复制该文章的部分内容,若要查看完整内容,请点击原文地址查看
Python:
1)查找元素的ID。
from selenium import webdriver
browser = webdriver.Firefox()
browser.find_element_by_id("Element's id")
2)通过元素的name来定位。
browser.find_element_by_name("Element's name")
3)通过所应用的样式表名className。
browser.find_element_by_class_name("class name")
4)通过CSS应用特征。
find_element_by_css_selector("a[id='id']")
5)通过链接的文本。
browser.find_element_link_name("link name")
6)通过XPATH定位。
browser.find_element_by_xpath("//***[*='**']")
看完上面这些,对我的代码进行了几种改进,实验结果证明上面方法都是可行有效的。
下面是对几种定位方法的演示,演示访问的地址位移动网站地址。
from selenium import webdriver import time import re #做一个等待的通用方法 def sleep(sec=3): time.sleep(sec) driver = webdriver.Firefox() driver.get("http://m.mail.10086.cn") sleep() driver.find_element_by_name("UserName").send_keys("longname") sleep() driver.find_element_by_css_selector(".textBox_pw").send_keys("password") #使用class定位方式 sleep() driver.find_element_by_id("loginBtn").click() sleep(10) line = driver.current_url matchObj = re.match(r'(^.*?.cn).*$',line,re.M|re.I) print(matchObj.group(1)) #输出当前的浏览器地址(不包含详细地址和参数) driver.find_element_by_xpath(".//*[@id='logout']/a/i").click() sleep() driver.find_element_by_link_text("重新登录").click() sleep() driver.quit()