关注分享主机优惠活动
国内外VPS云服务器

常见的Selenium方法(Python)(Selenium方法概述)

概述:Overview是一个开源自动化框架,模拟用户与浏览器交互的行为,主要用于界面的自动浏览器兼容性测试。 它封装了浏览器的原生形式,充当编程语言和浏览器之间的沟通桥梁,以完成让浏览器工作的目的。

Selenium 概述

Selenium 是一个开源 Web 自动化框架,用于模拟用户与浏览器交互的行为。 这主要用于界面自动化和浏览器兼容性测试。 优点: 1、跨平台,如Windows、Linux、Mac。 2.支持Chrome、Firefox、Edge、IE、Oear等多种浏览器。 3.完全开源。 webdriver:将浏览器原生API封装成WebDriver API。 WebDriver API充当编程语言和浏览器之间的桥梁,用于与浏览器交互。 注意:不同的浏览器需要不同的网络驱动程序。 此外,Web 驱动程序版本号必须与浏览器版本号相对应。

Selenium 操作浏览器 1、启动浏览器

引导包:

from selenium import webdriver 1)直接指定驱动路径

本文以 Chrome 浏览器为例

driver = webdriver.Chrome(executable_path="driver path") 2) 设置驱动程序环境变量

将Webdriver部署路径添加到环境变量中。 添加环境变量的步骤:桌面—>我的电脑—>属性—>高级系统设置->环境变量->查找并选择系统变量路径->点击编辑->新建->保存。

建议:通常,放置与浏览器相对应的驱动程序文件。 直接在Python中获取版本如果将其保存到安装目录中,则无需再次添加环境变量(我的典型方法)。 设置环境变量后,无需再次指定驱动路径。

driver = webdriver.Chrome() 2. 打开网页 URL driver.get("http://xxxx")。 3. 其他浏览器控件 driver.maximize_window( ) # 最大化浏览器 driver.minimize_window() # 最小化浏览器 driver.set_window_size(1980,1080) # 指定浏览器大小 4. 无界面操作 options = webdriver .ChromeOptions()options.add_argument ("[ k4][ k4]headless") # 设置 Interfaceless driver=webdriver.Chrome(chrome_options=options) 5. 关闭浏览器。

close():关闭当前浏览器窗口 quit():关闭所有页面。 关闭浏览器 6.其他操作 正向:driver.forward() 反向:driver.back() 刷新:driver.refresh()

元素放置 1.传统放置方法 driver.find_element_by_id() find_element_by_name() driver。 .find_element_by_css_selector( )driver.find_element_by_tag_name()driver.find_element_by_class_name()driver.find_element_by_xpath()driver.find_element_by_link_text()driver.find_element_by_partial_link_text():模糊查询

注:查找详情元素:只需将上述放置方法中的元素更改为类似 driver.find_elements_by_name() 的内容,不带唯一属性 ID。

2.xpath放置方法

**绝对路径:**" / " 就是 /html/body/table/tbody/tr[2]/td[2]/div/div[2]/ 这个表示逐层查找HTML标签,如table[2]/thead/tr/。 [1] **相对路径:**用“//”表示任意位置,按照指定路径匹配节点,如下: //*[@id="fileID"] 如何放置常用函数: contains 方法(例如使用 xpath=//input[contains(@id,'abcd')]) text() 方法(例如 xpath= //button [text()='save']) 使用starts- with 方法(另一个原因与ends-with 相同)。 这主要用在元素的属性部分发生改变的时候,比如:

# 示例:id=abcd12312sdfsf342xpath=//input[starts -with(@id,"abcd" )]

元素必须使用多个属性值进行定位。 您可以像这样使用“and”:

//span[@id="fileID] " 和 @class="classname"] 3. css 放置 常用的有以下几种: 选择类:find_element_by_css_selector(".slg") 选择ID:find_element_by_css_selector("#su") 选择标签:find_element_by_css_selector("input ") 选择属性:find_element_by_css_selector("[name='kw' ]") 层次关系:find_element_by_css_selector(“跨度>infind_element_by_css_selector(“form>input:nth-child(2)”) 查找#form标签下的第二个input元素组合选择:find_element_by_css_selector(“form.fm>span>input.slg”) 其他方法:find_element_by_css_selector(" [class*=swait_lg]"),查找包含“swait_lg”的类属性。 find_element_by_css_selector("[class^=bba]"),以“bba”开头 find_element_by_css_selector("[class$=abb]"),以“abb”开头...

元素操作

Click : click( ) 清除原始内容:clear() 输入值:send_keys() 获取内容:text 获取元素的属性:get_attribute() 元素显示:is_displayed( )

焦点转换

1 前进到弹窗:

ele = driver.switch_to.alertele.accept() # 接受 ele.text # 获取弹窗内容 ele.dismiss() # 退出或取消

2. 页内焦点切换:driver.switch_to.frame(frame) 退出当前焦点窗口,返回原窗口:driver.switch_to.default_content() 3.多窗口切换:

driver.switch_to.handles= driver.window_handles()driver.switch_to.window(handles[-1]) 等待

Selenium 有三种等待方法: 1. 强制等待

time.sleep(2)

2. 显示等待(特定元素的一部分)

WebdriverWait(driver,5,0.5).until(lambda driver:driver.find_element_by_xpath())

3.全局,可以解决大部分元素等待问题)

driver.implicitly_wait(20) 截图

1. 捕获整个网页:

driver.get_screenshot_as_base64() # 保存Base64编码格式 driver.save_screenshot( "XX/XX.png") # 如果出现警告等弹出对话框后进行截图,程序会抛出异常 driver.get_screenshot_as_png() # 保存的是二进制数据,必须写入为映像文件以保存驱动程序。 get_screenshot_as_file("XX/XX.png") # 获取当前窗口的屏幕截图。 如果截图成功则返回True。 如果发生 IOError,则返回 False。

2. 截屏:

ele.screenshot()ele = driver. find_element_by_id("msg")ele.screenshot("./3.png") 鼠标键盘操作

常用工具:动作链、pymouse、pykeyboard、pyautogui 1、动作链常用鼠标操作: 单机版:click()双击:double_click( ) 移动到元素:move_to_element 将鼠标移到元素上:click_and_hold 将元素拖动到另一个元素:drag_and_drop 用法:

from selenium.webdriver.common.action_chains import actionChainsActionChains(driver).context_click(driver.find_element_by_id("su")).perform()

注意:所有鼠标事件都调用perform()来执行ActionChains中存储的所有动作

2.键盘操作:

from selenium.webdriver.common.keys import Keyssend_keys(Keys.ENTER) # 键盘回车事件 send_keys(Keys.BACKSPACE) # 删除、回滚 # 使用send_keys(Keys.CONTROL," 组合a ") # 选择全部 send_keys(Keys.CONTROL,"c") # 复制并调用 JS 方法

用法: driver.execute_script(js code) 更改只读属性如下: driver.execute_script("document.getElementById (/ "su/").readOnly=0;") 转到页面底部

driver.excute_script("window.scrollTo(0,document.body.scrollHeight)")

注意:这个文章是在工作中学习的,使用了常见的 Selenium 方法。 如有错误,请指出。

未经允许不得转载:主机频道 » 常见的Selenium方法(Python)(Selenium方法概述)

评论 抢沙发

评论前必须登录!