首页 > 其他分享 >selenium

selenium

时间:2022-11-13 20:05:07浏览次数:35  
标签:xpath webdriver selenium driver element find


selenium

有头浏览器

有窗口界面 谷歌 火狐

无头浏览器

没有窗口界面 phantomJs

chromedriver 安装方式

chromedriver 下载网站 https://npm.taobao.org/mirrors/chromedriver/

phantomJs 下载网站 https://phantomjs.org/download.html

配置:解压完成之后放置python解释器文件内

将解压后的可执行文件拷贝到Python安装目录的Scripts目录中

如图1:

selenium_窗口句柄

phantomJs 和chromedriver 一样的,下面是selenium的一些用法

2.元素定位

send_keys() 输入关键字

click() 点击

定位元素 xpath

driver.find_element_by_xpath('//*[@id="kw"]').send_keys('python')
driver.find_element_by_xpath('//*[@id="su"]').click()

class属性值

id 标签定位

driver.find_element(s)_by_id 返回一个元素
driver.find_element(s)_by_class_name 根据类名获取元素列表
driver.find_element(s)_by_name (根据标签的name属性值返回包括标签对象元素的列表)
driver.find_element(s)_by_xpath 返回一个包含元素的列表
driver.find_element(s)_by_xpath 根据标签名获取元素的列表
driver.find_element(s)_by_css_selector 根据css选择器来获取元素列表
driver.find_element(s)_by_link_text 根据链接文本获取元素列表
driver.find_element(s)_by_partial_link_text 根据链接包含的文本获取元素列表
link_text()和partial_link_text()的区别:全部文本和包含某个文本
掌握driver对象定位标签元素获取标签对象的方法
# 切换窗口
driver.switch_to.window(driver.window_handles[-1])
# 返回响应地址
print(driver.current_url)
# 记录所有的窗口句柄,新打开的窗口句柄会添加到列表尾部
print(driver.window_handles)
定位iframe框架
el_frame = driver.find_element_by_xpath('//*[@id="login_frame"]')
# driver.switch_to.frame('login_frame')
driver.switch_to.frame(el_frame)

Selenium用法代码演示

selenium测试是否可以用测试:

from selenium import webdriver

# 初始化driver环境
driver = webdriver.Chrome()


# 向一个url发起请求
driver.get("https://www.baidu.com/")

# 打印页面标题
print(driver.title)

# 退出浏览器
driver.quit() # 一定要记得退出!不然会有残留进程

如果出现下图2成功:

selenium_chrome_02

PhantomJS测试是否可以用测试:

from selenium import webdriver

driver = webdriver.PhantomJS()

driver.get("https://www.baidu.com")

# 把网页保存成图片
driver.save_screenshot('baidu.png')

driver.quit()

selenium浏览器测试二:

from selenium import  webdriver
import time
# 1.创建浏览器对象
driver = webdriver.Chrome()

# 2.操作浏览器对象
driver.get("https://www.baidu.com")
driver.find_element_by_xpath('//*[@id="kw"]').send_keys('python')
driver.find_element_by_xpath('//*[@id="su"]').click()

time.sleep(2)

driver.quit()

如图3:

selenium_python_03

selenium高级

设置无界面模式

from selenium import webdriver

options = webdriver.ChromeOptions()
# 添加无界面参数
options.add_argument('--headless')
driver = webdriver.Chrome(options=options)

鼠标操作

"""
鼠标操作三步走:
1、创建鼠标事件类对象
2、指定鼠标行为
3、执行
"""
from selenium import webdriver
# 导入鼠标事件类
from selenium.webdriver import ActionChains

driver = webdriver.Chrome()
driver.get('http://www.baidu.com/')

# 移动到 设置,perform()是真正执行操作,必须有
element = driver.find_element_by_xpath('//*[@id="u1"]/a[8]')
ActionChains(driver).move_to_element(element).perform()

# 单击,弹出的Ajax元素,根据链接节点的文本内容查找
driver.find_element_by_link_text('高级搜索').click()

切换页面

  • 适用网站+应对方案
【1】适用网站类型
页面中点开链接出现新的窗口,但是浏览器对象driver还是之前页面的对象,需要切换到不同的窗口进行操作

【2】应对方案 - driver.switch_to.window()

# 获取当前所有句柄(窗口)- [handle1,handle2]
all_handles = driver.window_handles
# 切换browser到新的窗口,获取新窗口的对象
driver.switch_to.window(all_handles[1])


标签:xpath,webdriver,selenium,driver,element,find
From: https://blog.51cto.com/u_15870497/5847914

相关文章