一、元素的8种定位 (以百度为例)
#导入所需要的包
from selenium import webdriver
dr = webdriver.Chrome()
dr.get("https://www.baidu.com/")
1、通过id定位
dr.find_element_by_id("kw").send_keys("selenium自动化")
2.通过name定位
dr.find_element_by_name("").send_keys("selenium自动化")
3、通过class_name定位
dr.find_element_by_class_name("s_ipt").send_keys("selenium自动化")
4、通过link_text定位
dr.find_element_by_link_text("新闻").click()
5.通过partail_link_text定位
dr.find_element_by_link_text("新闻").click()
dr.find_element_by_partail_link_text("主持中央深化").click()
6.通过tag_name来定位
input1 = dr.find_elements_by_tag_name("input")
for input2 in input1:
if input2.get_attribute("class") == "s_ipt" \
and input2.get_attribute("autocomplete") =="off"
dr.input1.send_keys
7.通过xpath定位
dr.find_element_by_xpath(‘//input[@id="kw"]‘).send_keys("天行健,君子当自强不息")
8.通过css_selector定位
dr.find_element_by_css_selector(input[name=id]).send_keys("天行健,君子当自强不息")
dr.find_element_by_css_selector("#kw").send_keys("天行健,君子当自强不息")
二、By类
from selenium import webdriver
#导入By类的包
from selenium.webdriver.common.by import By
dr = webdriver.Chrome()
dr.get("https://www.baidu.com/")
# dr.find_element(By.ID,"kw").send_keys("selenium自动化")
# dr.find_element(By.CLASS_NAME,"s_ipt").send_keys("selenium")
# dr.find_element(By.XPATH,‘//input[@id="kw"]‘).send_keys("selenium自动化")
# dr.find_element(By.CSS_SELECTOR,"input[autocomplete=off]").send_keys("web自动化")
dr.find_element(By.LINK_TEXT,"新闻").click()
dr.find_element(By.PARTIAL_LINK_TEXT,"中国国际进口").click()
三、设置元素等待。三种方式
1、sleep(s) python time模块下面的方法
2、implicitly_wait(s) webdriver 隐式等待(就是在创建driver时,为浏览器对象创建一个等待时间,这个方法是得不到某个元素就等待一段时间,直到拿到某个元素位置。)
例:
from selenium import webdriver
dr = webdrier.Chrome()
dr.implicitly_wait(5)
dr.get("https//www.baidu.com/")
dr.find_element_by_id("kw").send_keys("selenium自动化")
dr.find_element_by_id("su").click()
3、webDriverWait显示等待(显示等待是应该使用 selenium.webdriver.support.excepted_conditions期望的条件和selenium.webdriver.support.ui.webDriverWait 来配合完成。)
例:
from selenium import webdriver
from time import ctime
from.selenium.webdriver.support.ui import webDriverWait
dr = webdriver.Chrome()
dr.get("https//www.baidu.com")
#WebDriverWait显示等待 Selenium模块中的EC类提供的方法
print ("%s"%ctime())
try:
wait = WebDriverWait(dr,5,0.5).until(lambda dr:dr.find_element_by_id("kddaw"))
except:
print ("%s"%ctime())
原文地址:https://www.cnblogs.com/sjjhw/p/9960976.html