定位方法
selenium4:
driver.find_element(定位策略用By类,定位表达式) --- 返回表达式匹配的第一个元素,如果找不到元素,会报错。
driver.find_elements(定位策略用By类,定位表达式) --- 返回表达式匹配的所有元素,返回的是列表类型。
By类:管理8种定位方式,每一种定位方式,都是一个类属性
例:查找元素的方法 ele = driver.find_element(By.XPATH,'//input[contains(@class,"quickSearchInput")]')
#元素的输入操作,按Enter搜索
ele.send_keys("selenium4",Keys.ENTER)
WebElement类:(属性和方法)
常见的:
1.clear() 清除操作
2.send_keys() 输入操作
3.click() 点击操作
4.text() 获取元素的文本
5.get_attribute() 获取元素属性
6.location_once_scrolled_into_view 将元素滚动到可见区域
7.screenshot() 获取当前元素的截图
8.size 获取当前元素的大小
9.location 获取当前原色的坐标
10.is_displayed() 元素是否可见
11.is_enabled() 元素是否可用
12.is_selected() 复选框/单选框,当前元素是否选中了
三大等待
1.sleep --- 强制等待
2.智能等待
2.1显式等待(常用)
1.条件很丰富
2.那里需要等待条件成立,哪里就调用,一次性
条件:expected_conditions
等待:WebDriverWait
等待xxx条件成立,多久查询条件是否成立,成立就不等待了,不成立则超时报错。需要导包
from selenium.webdriver.support import expected_conditions
from selenium.webdriver.support.wait import WebDriverWait
条件:
visiblity_of_element_located(locator) 指定元素可见
presence_of_element_located(locator) 指定元素存在
element_to_be_clickable(mark) 指定的元素可点击
等待:
WebDriverWait(driver,超时时间,轮询周期-多久确认一次条件是否成立,默认是0.5s).until(条件)
2.2隐式等待
driver.implicitly_wait(10) 在会话期间只调用一次,全局可用。条件单一,即元素存在
面试题:找不到元素noSuchElement是什么原因?
1.元素可能在iframe中
2.没有等待,元素还没有加载出来
3.元素定位表达式错误
三大切换
窗口切换
1.等待新窗口出现
time.sleep(1)
2.获取当前所有打开的窗口 --列表
wins = driver.window_handles
print("当前会话打开的所有窗口:",wins)
3.切换到最后一个窗口
driver.switch_to.window(wins[-1])
4.切换回去
driver.switch_to.window(wins[0])
iframe切换
1.识别元素在iframe当中
2.切换进入iframe -- 传入iframe的定位
driver.switch_to.frame(id/name属性 或者 iframe的索引 或者 webelement对象-driver.find_element)
id/name属性
webelement对象-driver.find_element ---- driver.find_element
iframe的索引 ---- 获取到的是列表,从0开始
3.切换回最开始的html
driver.switch_to.default_content()
4.回到上一层的iframe
driver.switch_to.parent_frame()
alert切换
1.警告框 2.确认框 3.提示框
案例地址:http://www.runoob.com/js/js-popup.html
1.触发alert弹框的出现
等待:
time.sleep(0.5)
WebDriverWait(driver,5).until(EC.alert_is_present())
2.调用driver.switch_to.alert 切换到alert弹框 --- Alert类
driver.switch_to.alert 或者 alert = Alert(driver) 需要导入Alert包
3.关闭弹框
alert.accept() 确定
alert.dismiss() 取消
alert.text 获取文本
alert.send_keys() 输入文本
标签:web,复习,元素,driver,alert,switch,iframe,自动化,element From: https://www.cnblogs.com/xuhaotest/p/17994799