1、原理
2、定位元素
根据特征选
#1、根据 name 查找元素位置,定位搜索框进行填充
driver.find_element(By.NAME,"wd").send_keys("hello")
#2、根据class_name查找元素,定位搜索框进行填充
# driver.find_element(By.CLASS_NAME,"s_ipt").send_keys("hello")
#3、根据 id 查找元素位置,定位 “百度一下”的按钮
# driver.find_element(By.ID,"su").click()
#4、根据tag_name定位元素,定位出来的是页面第一个该标签内容
# driver.find_element(By.TAG_NAME,"input").click()
#5、根据link_text定位元素,填写超链接的文字就可
# driver.find_element(By.LINK_TEXT,"图片").click()
#6、根据partial_link_text定位元素,,超链接的文字过长,就可以填写部分进行模糊匹配
# driver.find_element(By.PARTIAL_LINK_TEXT,"图").click()
#7、根据xpath定位元素
# driver.find_element(By.XPATH,'//*[@id="su"]').click()
#8、根据css_selector定位元素
# driver.find_element(By.CSS_SELECTOR,'#su').click()
定位不到元素是什么原因?
1、只能找到一个页面上对应的元素标识,对frame/iframe表单内嵌的页面元素无法直接定位。
2、弹出警告框
#定位弹出警告框
#点击确认
driver.switch_to.alert.accept()
#点击取消
driver.switch_to.alert.dismiss()
#点击获取文本内容
driver.switch_to.alert.text
#点击发送文本
driver.switch_to.alert.send_keys("")
3、元素没有加载出来就对元素进行定位,可以通过等待解决。
强制等待:
import time
time.sleep(5)
显示等待:
from selenium.webdriver.support.wait import WebDriverWait
#显示等待,最长时间等待30秒,每隔1秒就去看元素有没有加载完成
WebDriverWait(driver,30).until(driver.find_element(By.ID,'kw'))
隐式等待:
#隐式等待
driver.implicitly_wait(5)
3、切换窗口
1、
#打开多个页面,需要定位新的页面
#获取打开的多个窗口句柄
windows = driver.window_handles
#切换到最后一个页面去
driver.switch_to.window(windows[-1])
2、
#获取目标窗口
windows1 = driver.current_window_handle
#获取所有窗口集合
windows = driver.window_handles
#遍历,如果不是目标窗口就切换下一个
for current_window in windows:
if current_window != windows1:
driver.switch_to.window(current_window)