公司网站维护经验总结,如何利用网站模板做网站,海口高端网站建设,早期经典网页游戏一、元素定位方式 1、元素属性定位#xff1a; 1 element driver.find_element_by_id(self, id) 该类方法已经过时#xff0c;新的方法如下#xff1a; element driver.find_element(By.ID, ID 值) # 用元素的 ID 属性定位element driver.find_eleme…一、元素定位方式 1、元素属性定位 1 element driver.find_element_by_id(self, id) 该类方法已经过时新的方法如下 element driver.find_element(By.ID, ID 值) # 用元素的 ID 属性定位element driver.find_element(By.CLASS_NAME, classname 值) # 用元素的 CLASS_NAME 属性定位element driver.find_element(By.NAME, name 值) # 用元素的 NAME 属性定位element driver.find_element(By.LINK_TEXT, 元素文本值) # 用元素的 LINK_TEXT链接文本 定位element driver.find_element(By.PARTIAL_LINK_TEXT, 元素文本部分值) # 用元素的 LINK_TEXT链接文本部分匹配 定位element driver.find_element(By.TAG_NAME, 元素标签名) # 用元素的 TAG_NAME标签名 定位element driver.find_element(By.CSS_SELECTOR, 元素 css_selector 值) # 用元素的 CSS选择器 定位这个可以先去了解一下CSS选择的用法也可以不用F12可直接复制当前元素的 css属性 值element driver.find_element(By.XPATH, 元素 xpath 路径) # 用元素的 XPATH路径 定位这个也可以去了解一下XPATH的语法也可以不用F12可直接复制当前元素的 xpath 路径class By如下 二、鼠标及键盘事件 1、鼠标事件 模拟鼠标操作需先引入 ActionChains 类具体用法如下 1 from time import sleep2 from selenium import webdriver3 from selenium.webdriver.common.by import By4 from selenium.webdriver.common.action_chains import ActionChains # 引入5 6 driver webdriver.Chrome()7 driver.get(rhttps://xxx) # 打开浏览器并访问该链接这里的链接不便展示哈8 driver.maximize_window()9
10 # 定位元素并操作
11 driver.find_element(By.NAME, username).send_keys(v-luoyang)
12 driver.find_element(By.NAME, password).send_keys(12456)
13 btn driver.find_element(By.CLASS_NAME, el-button)
14
15 ActionChains(driver).click(btn).perform() # 单击 btn 元素更多方法参见 ActionChains 的源码说的非常清楚
16
17
18 # 关闭并退出浏览器
19 driver.quit() 2、键盘事件 模拟键盘操作需先引入 Keys 模块再使用 send_keys 方法具体使用如下 1 from time import sleep2 from selenium import webdriver3 from selenium.webdriver.common.by import By4 from selenium.webdriver.common.keys import Keys5 6 driver webdriver.Chrome()7 driver.get(rhttps://xxx/) # 打开浏览器并访问该链接这里的链接不便展示哈8 driver.maximize_window()9
10 # 定位元素
11 user_ele driver.find_element(By.NAME, username)
12 pwd_ele driver.find_element(By.NAME, password)
13
14 user_ele.send_keys(v-luoyang) # 输入值
15 user_ele.send_keys(Keys.CONTROL, a) # 全选
16 user_ele.send_keys(Keys.DELETE) # 删除
17 user_ele.send_keys(Keys.ENTER) # 回车
18
19 btn driver.find_element(By.CLASS_NAME, el-button)
20 btn.click()
21
22
23 # 关闭并退出浏览器
24 #driver.quit() 更多的支持的键盘符号可在 Keys 类里查看 三、浏览器操作 1 from selenium import webdriver2 3 driver webdriver.Chrome() # 获取浏览器对象4 driver.get(rhttps://gad.dev.ztgame.com/) # 打开浏览器并访问该链接这里的链接不便展示哈5 driver.get(rhttps://gad.dev.ztgame.com/#/creative/material) # 进入其他链接6 driver.maximize_window() # 浏览器窗口最大化7 driver.set_window_size(width480, height800) # 设置浏览器的宽高8 name driver.name # 获得浏览器名称9 driver.forward() # 前进
10 driver.back() # 后退
11 driver.refresh() # 刷新
12 current_handle driver.current_window_handle # 获取当前窗口句柄即获取当前浏览器当前窗口的编号
13 all_handles driver.window_handles # 获取当前浏览器所有窗口的句柄当前浏览器指通过上面 get() 方法打开的浏览器
14 driver.switch_to_window(句柄) # 切换当前窗口为指定的句柄的窗口
15 current_url driver.current_url # 获取当前窗口的url
16 title driver.title # 获取当前窗口的标题
17 page driver.page_source # 获取当前窗口的源码
18 driver.get_screenshot_as_file(截图保存路径) # 窗口截图保存至指定的路径
19
20 driver.close() # 关闭当前窗口
21 driver.quit() # 关闭所有窗口并退出浏览器四、等待 1、sleep() 例 sleep(3)强制等待无论程序是否加载完成必须等待3s常用于调试在元素定位莫名定位不到的时候用它也许可以解决问题 2、隐式等待 例 driver.implicitly_wait(30) # 隐性等待最长等30秒 相当于设置了一个最长等待时间若在规定时间内找到则执行下一步未找到则抛出NoSuchElementException它的作用域是全局的跟driver的生命周期相同一般定义在父类中用于给所有子类的页面元素设置该等待机制设置一次全局有效直到 driver 实例被关闭。 PS可以和显式等待一起使用但建议不要一同使用。一同使用时取决于谁设置的时间更长。 3、显式等待 显式等待一般搭配 until() 方法使用意为直到规定时间内定位到该元素例 1 WebDriverWait(driver, 20, 0.5).until(EC.presence_of_element_located(locator)) # locator 如 locator (By.ID, username) PS这里用到了 WebDriverWait 类与 expected_conditions 模块这里借用一下另一个博客的他的博客地址 ①WebDriverWait 类里主要有两个方法和一个 init 方法具体用处可以看源码但官方话看得我是头昏脑胀还是看一些比较容易懂的 __init__参数如下
1 driver: 传入WebDriver实例即我们上例中的driver
2 timeout: 超时时间等待的最长时间同时要考虑隐性等待时间
3 poll_frequency: 调用until或until_not中的方法的间隔时间默认是0.5秒
4 ignored_exceptions: 忽略的异常如果在调用until或until_not的过程中抛出这个元组中的异常则不中断代码继续等待如果抛出的是这个元组外的异常则中断代码抛出异常。默认只有NoSuchElementException。 until参数如下
1 method: 在等待期间每隔一段时间__init__中的poll_frequency调用这个传入的方法直到返回值不是False
2 message: 如果超时抛出TimeoutException将message传入异常 until_not 与 until 相反。 调用方法 1 WebDriverWait(driver, 超时时长, 调用频率, 忽略异常).until(可执行方法, 超时时返回的信息) 这里的可执行方法指该方法中一定要有__call()__方法没有就会报错 TypeError: xxx object is not callable ② expected_conditions 是 selenium 中的一个模块selenium.webdriver.support.expected_conditions主要包含了一系列的判断条件。 以下两个条件类验证title验证传入的参数title是否等于或包含于driver.title title_is title_contains 以下两个条件验证元素是否出现传入的参数都是元组类型的locator如(By.ID, ‘kw’) 顾名思义一个只要一个符合条件的元素加载出来就通过另一个必须所有符合条件的元素都加载出来才行 presence_of_element_located presence_of_all_elements_located 以下三个条件验证元素是否可见前两个传入参数是元组类型的locator第三个传入WebElement 第一个和第三个其实质是一样的 visibility_of_element_located invisibility_of_element_located visibility_of 以下两个条件判断某段文本是否出现在某元素中一个判断元素的text一个判断元素的value text_to_be_present_in_element text_to_be_present_in_element_value 以下条件判断frame是否可切入可传入locator元组或者直接传入定位方式id、name、index或WebElement frame_to_be_available_and_switch_to_it 以下条件判断是否有alert出现 alert_is_present 以下条件判断元素是否可点击传入locator element_to_be_clickable 以下四个条件判断元素是否被选中第一个条件传入WebElement对象第二个传入locator元组 第三个传入WebElement对象以及状态相等返回True否则返回False 第四个传入locator以及状态相等返回True否则返回False element_to_be_selected element_located_to_be_selected element_selection_state_to_be element_located_selection_state_to_be 最后一个条件判断一个元素是否仍在DOM中传入WebElement对象可以判断页面是否刷新了 staleness_of
现在我也找了很多测试的朋友做了一个分享技术的交流群共享了很多我们收集的技术文档和视频教程。
如果你不想再体验自学时找不到资源没人解答问题坚持几天便放弃的感受
可以加入我们一起交流。而且还有很多在自动化性能安全测试开发等等方面有一定建树的技术大牛
分享他们的经验还会分享很多直播讲座和技术沙龙
可以免费学习划重点开源的
qq群号485187702【暗号csdn11】
最后感谢每一个认真阅读我文章的人看着粉丝一路的上涨和关注礼尚往来总是要有的虽然不是什么很值钱的东西如果你用得到的话可以直接拿走 希望能帮助到你【100%无套路免费领取】