目录
一、元素的操作
二、查询元素信息
三、 浏览器的操作
四、 窗口操作
五、添加等待
一、元素的操作
(1)点击:click()
(2)模拟按键输入:send_keys()
(3)清除数据:clear()
(4)提交:submit()
代码如下:
driver=webdriver.Chrome()
driver.get("https://www.baidu.com/")
# 搜索框输入csdn
driver.find_element(By.ID,'kw').send_keys("csdn")
# 清除搜索框内容
driver.find_element(By.ID,'kw').clear()
# 搜索框输入CSDN
driver.find_element(By.ID, 'kw').send_keys("CSDN")
# 点击百度一下进行提交,click和submit都可以
driver.find_element(By.ID,'su').submit()
driver.find_element(By.ID, 'su').click()
二、查询元素信息
(1)是否显示:is_displayed()
(2)是否启用:is_enabled()
(3)是否被选中:is_selected() # 多用于复选框、单选框、输入框和选择元素中
(4)获取元素标签名:tag_name
(5)获取元素的尺寸和坐标:rect
(6)获取元素css值:value_of_css_property('color')
(7)获取文本内容:text
(8)获取特性或属性:get_attribute("value")
代码如下:
driver=webdriver.Chrome()
driver.get("https://www.baidu.com/")
elem=driver.find_element(By.ID,'su')
print("是否显示:"+str(elem.is_displayed()))
print("是否启用:"+str(elem.is_enabled()))
print("是否被选中:"+str(elem.is_selected()))
print("标签名:"+elem.tag_name)
print("尺寸和坐标:"+str(elem.rect))
print("CSS属性:"+elem.value_of_css_property('color'))
# text多用于a标签
elem1 = driver.find_element(By.LINK_TEXT, '新闻')
print("文本内容:" + elem1.text)
print("属性name值:"+elem.get_attribute('value'))
driver.quit()
运行结果如下:
是否显示:True
是否启用:True
是否被选中:False
标签名:input
尺寸和坐标:{'height': 44, 'width': 108, 'x': 844, 'y': 188.39584350585938}
CSS属性:rgba(255, 255, 255, 1)
文本内容:新闻
属性name值:百度一下
三、 浏览器的操作
(1)获取标题:driver.title
(2)获取url:driver.current_url
(3)后退:driver.back()
(4)前进:driver.forward()
(5)刷新:driver.refresh()
代码如下:
driver=webdriver.Chrome()
driver.get("https://www.baidu.com/")
driver.find_element(By.ID,'kw').send_keys('csdn')
driver.find_element(By.ID,'su').click()
# 获取标题
print("标题:"+driver.title)
# 获取url
print("当前页面url:"+driver.current_url)
# 后退
driver.back()
time.sleep(2)
#前进
driver.forward()
time.sleep(2)
# 刷新当前页面
driver.refresh()
time.sleep(2)
driver.quit()
运行结果如下:
标题:百度一下,你就知道
当前页面url:https://www.baidu.com/s?ie=utf-8&f=8&rsv_bp=1&rsv_idx=1&tn=baidu&wd=csdn&fenlei=256&rsv_pq=0xf933dba900015f0e&rsv_t=f935ai3JnvqmxX390nkytfNlPBcJcNWA8801vNriGM7BzCoVc0%2Fk%2BjTL9Y4b&rqlang=en&rsv_enter=0&rsv_dl=tb&rsv_sug3=4&rsv_sug1=1&rsv_sug7=100&rsv_btype=i&inputT=283&rsv_sug4=283
四、 窗口操作
(1)获取当前窗口的窗口句柄:original_window ==driver.current_window_handle
(2)创建新窗口并切换到新窗口:driver.switch_to.new_window('window')
(3)关闭窗口:driver.close()
(4)退出浏览器:driver.quit()
(5)获取窗口的大小:width = driver.get_window_size().get("width")
(6)height = driver.get_window_size().get("height")
(7)设置窗口的大小:driver.set_window_size(1024, 768)
(8)获取窗口的位置:x = driver.get_window_position().get('x')
y = driver.get_window_position().get('y')
(9)设置窗口的位置:driver.set_window_position(0, 0)
(10)窗口最大化:driver.maximize_window()
(11)窗口最小化:driver.minimize_window()
(12)屏幕截图:driver.save_screenshot('./百度.png')
代码如下:
driver=webdriver.Chrome()
driver.get("https://www.baidu.com/")
original_window=driver.current_window_handle
# 创建新窗口并切换到新窗口
driver.switch_to.new_window('window')
# 获取窗口的大小
width=driver.get_window_size().get('width')
height=driver.get_window_size().get('height')
print("窗口的宽:"+str(width))
print("窗口的高:"+str(height))
# 设置窗口的大小
driver.set_window_size(1500,500)
# 获取窗口的位置
x=driver.get_window_position().get('x')
y=driver.get_window_position().get('y')
print("x坐标:"+str(x))
print("y坐标:"+str(y))
# 设置窗口的位置
driver.set_window_position(40,40)
# 窗口最大化
driver.maximize_window()
time.sleep(2)
# 窗口最小化
driver.minimize_window()
time.sleep(2)
# 关闭新窗口
driver.close()
# 返回原始页面
driver.switch_to.window(original_window)
# 创建新标签
driver.switch_to.new_window('tab')
time.sleep(2)
# 关闭该标签页
driver.close()
# 返回原始页面
driver.switch_to.window(original_window)
# 屏幕截图
driver.save_screenshot('./百度.png')
time.sleep(3)
# 退出浏览器
driver.quit()
运行结果如下:
窗口的宽:1050
窗口的高:670
x坐标:20
y坐标:20
五、添加等待
(1)强制等待:运行到这块都要等待,需要引入time模块, 单位为秒。
time.sleep(3)
(2)显式等待:可以指定每多少秒,需要引入WebDriverWait模块,先创建一个等待对象,每1秒查询一次,直到某些条件满足,如果10秒该条件还没有满足,则报错。
wait=WebDriverWait(driver, timeout=10,poll_frequency=1)
wait.until(some_condition)
(3)隐式等待:隐式等待为全局等待,一般出现在driver的创建语句之后,整个页面的等待时间为10s,超过10秒没有加载出来则报错。
driver.implicitly_wait(10)
代码如下:
driver = webdriver.Chrome()
driver.get("https://www.baidu.com/")
# 显示等待
WebDriverWait(driver,10,1).until(ec.presence_of_element_located((By.ID,'kw')))
driver.quit()
driver = webdriver.Chrome()
driver.get("")
# 隐式等待
driver.implicitly_wait(1)
driver.quit()
driver = webdriver.Chrome()
driver.get("")
# 强制等待
time.sleep(3)
driver.quit()
注意:
报错:
TypeError: presence_of_element_located() takes 1 positional argument but 2 were given
解决:
presence_of_element_located()方法支持一个参数,传(By.ID,'kw')进去,而不是By.ID,'kw'
一边学习,一边总结,如有问题,欢迎大家指正!
下一篇: 自动化测试学习(六)-selenium定位元素之CSS选择器详细用法