网站静态路径华强北电子商城

张小明 2026/1/19 19:04:01
网站静态路径,华强北电子商城,企业做网站公司怎么做,天津网站建设 seo#x1f345; 点击文末小卡片 #xff0c;免费获取软件测试全套资料#xff0c;资料在手#xff0c;涨薪更快 今天呢#xff0c;笔者想和大家来聊聊pythonselenium的web自动化之元素的常用操作#xff0c;废话不多说直接进入主题吧#xff01;一、常用操作关键代码点击文末小卡片免费获取软件测试全套资料资料在手涨薪更快今天呢笔者想和大家来聊聊pythonselenium的web自动化之元素的常用操作废话不多说直接进入主题吧一、常用操作关键代码点击ele.click()输入内容ele.send_keys(内容)清空内容ele.clear()获取文本内容ele.text获取属性值ele.get_attribute(属性名称)获取元素的宽高ele.sizesize和location一样都是实例属性返回都是字典格式获取元素的坐标ele.location元素坐标值是通过元素的最左上角相对浏览器内容区域的左上角来定位的# 定位元素 input_ele driver.find_element_by_id(kw) su_ele driver.find_element_by_id(su) # 获取元素的文本内容 input_ele.text # 获取元素的某个属性 input_ele.get_attribute(属性名称) # 输入内容 input_ele.send_keys(selenium) # 点击操作 su_ele.click() # 清空内容 input_ele.clear() # 获取元素的宽高 print(【百度一下】按钮的宽高{}.format(su_ele.size)) # 获取元素的x、y坐标值 print(【百度一下】按钮的坐标{}.format(su_ele.location))表单提交关键代码表单提交ele.submit()用于表单的提交也可以定位到具体提交按钮做一个点击的动作input_ele driver.find_element_by_id(kw) input_ele.submit() # 也可以实现回车检查元素关键代码是否可见ele.is_displayed()返回True可见反之不可见是否可点击ele.is_enabled()返回True可点击反之不可点击是否被选中ele.is_selected()返回True被选中反之未选中ele driver.find_element_by_id(xxxx) print(ele.is_displayed()) print(ele.is_enabled()) print(ele.is_selected())二、等待操作在web自动化中不得不提的元素等待操作我们在做功能测试中也会经常遇到页面元素未完全加载的情况需要等到元素出现后再进行操作。现在是代码代替人工去做这件事那自然也需要先等到元素加载完成才进行操作。当我们打开浏览器进入一个网页driver.get(网址)除了get()会自主强制等待网页加载完再进入下一个操作其他元素操作都不会自己等待页面加载完成因此在get()之后只要我们做的动作会让页面产生变化就要做一个等待动作以防元素未加载完成导致元素找不到报错因为代码运行的速度是非常快的。有三种等待方式一种强制等待两种智能等待隐性和显性。强制等待time.sleep(秒):表示让程序强制死等x秒无论发生什么都会在x秒之后再执行后续的代码import time time.sleep(2) # 强制等待10s隐性等待​implicitly_wait(秒):设置最长等待时间在这个时间内只要有个时间点加载完成则执行下一步代码如果在这个时间内仍未完成就会抛出一个异常在这整个driver的会话周期内设置一次即可全局都可用。​缺点程序会一直等待整个页面加载完成也就是一般情况下你看到浏览器标签栏那个小圈不再转,才会执行下一步但有时候页面想要的元素早就加载完成了但是因为个别js、图片之类的东西特别慢仍得等到页面全部完成才能执行下一步就会增加不必要的加载时间。from selenium import webdriver # 实例化chrome类 # 启动了Chromedriver并与Chromedriver开启了会话 driver webdriver.Chrome() driver.implicitly_wait(10) driver.get(https://www.baidu.com)显性等待​关键代码WebDriverWait(driver, 等待时长, 轮循周期).until/until_not(判断条件)。​使用WebDriverWait类和expected_conditions模块它会明确等到某个条件满足后再去执行下一步操作。它的等待机制是程序会每隔xx秒去寻找一遍如果条件成立则执行下一步否则以轮循的方式继续去寻找直到超过设置的最长时间然后抛出一个TimeoutException异常。​WebDriverWait类显性等待类​expected_conditions模块提供了一系列期望发生的条件如下title_is(title)判断当前页面的title是否等于预期title_contains(title)判断当前页面的title是否包含预期字符串presence_of_element_located(locator)判断某个元素是否存在dom树visiblilty_of_element_located(locator)判断某个元素是否可见visiblilty_of(element)跟上面的方法一样判断某个元素是否可见只是前者要传locator(定位器)后者直接传定位到的element就好了element_to_be_clickable(locator)判断某个元素是否可点击frame_to_be_available_and_switch_to_it(frame下标/name属性/webelement对象)判断该frame是否可以swtich进去可以则返回True并swtich进去否则返回False。alert_is_present()判断页面上是否存在alert以上是列举的部分条件类还有更多的方法有兴趣可以自行扩展。下面是其中一个方法示例import time from selenium import webdriver from selenium.webdriver.support.wait import WebDriverWait from selenium.webdriver.support import expected_conditions as EC from selenium.webdriver.common.by import By # By模块封装了8大定位方法名 driver webdriver.Chrome() # driver.implicitly_wait(10) # 智能等待10秒 driver.get(http://www.baidu.com) driver.find_element_by_xpath(//div[idu1]//a[nametj_login]).click() # 定位表达式 loc (By.ID, TANGRAM__PSP_10__footerULoginBtn) # 实际是11这里改成10找不到会弹出报错 # 等待元素可见等待时间10秒轮循周期默认0.5秒一次 WebDriverWait(driver, 10).until(EC.visibility_of_element_located(loc)) # 操作满足条件之后的元素 driver.find_element(*loc).click() time.sleep(2) driver.quit()​运行结果C:\software\python\python.exe D:/learn/test.py Traceback (most recent call last): File D:/learn/test.py, line 25, in module WebDriverWait(driver, 10).until(EC.visibility_of_element_located(loc)) File C:\software\python\lib\site-packages\selenium\webdriver\support\wait.py, line 80, in until raise TimeoutException(message, screen, stacktrace) selenium.common.exceptions.TimeoutException: Message: Process finished with exit code 1知识点​上面提到的定位器其实就是一个元组(定位方式, 定位表达式)By模块里封装了8大定位方法名跟我们之前的定位方式是一样的。​不过要注意的是在使用find_element() 定位元素时不是传入一个元组定位方式和表达式是直接作为参数传入的因此上面的例子中会用到*解包。而find_element_by_id(属性值)之类的定位底层代码用的其实就是find_element()后者只要传对应定位方式的值前者则需要传定位方式、定位表达式。三、iframe切换iframeiframe就是一个网页里面嵌套了另外一个框架/页面即一个html页面中还内嵌了另一个html页面这个内嵌的html页面放在iframe/iframe标签对中。iframe也是html中的某一个元素里面放的是html页面。切换到iframe​如果我们要操作的元素在内嵌的iframe页面中那么必须要从当前页面切换到iframe中然后再去iframe中的页面去操作元素。切换到iframe主要有以下两种方式方式一swtich_to.iframe()参数iframe的index下标/ iframe的name属性 / iframe的webelement对象# 切换到iframe 下标/name属性/webelement对象 driver.switch_to.iframe(login_frame_qq) driver.switch_to.iframe(0) driver.switch_to.iframe(dirver.find_element_by_tag_name(iframe))方式二EC.frame_to_be_available_and_switch_to_it()强烈推荐 等待和切换一次到位参数iframe的index下标/ iframe的name属性 / iframe的webelement对象等待条件此方法会判断iframe是否可用并且会自动切换到iframe中wait WebDriverWait(driver, 10) # 设置显性等待时间 # 设置等待条件此方法会判断iframe是否可用并且会自动切换到iframe中 wait.until(EC.frame_to_be_available_and_switch_to_it(login_frame_qq)) driver.find_element_by_id(switcher_plogin).click()切换到上层iframe​关键代码driver.iframe_to.parent_frame()​如果iframe中又内嵌了一个iframe那就只能在主html中一层一层地切进去。如果想返回上一层时也是一层一层地返回去。一般很少会返回去。切换到主html​关键代码driver.swtich_to.default_content()​切换到iframe之后本身在主html就变成了在切换后的内嵌html这时可以操作内嵌html的元素了如果想重新操作主html的元素就要先从iframe中回到主html。​这里要注意不管你是在第几层的iframe中想切回到主html中都只需执行一次。例子import time from selenium import webdriver from selenium.webdriver.support.wait import WebDriverWait from selenium.webdriver.support import expected_conditions as EC from selenium.webdriver.common.by import By # 主html、内嵌html # 确定要操作的元素是否在iframe内 # 启动Chromedriver并与Chromedriver开启会话 driver webdriver.Chrome() driver.maximize_window() driver.get(http://xxxx.com/) driver.find_element_by_id(js_login).click() wait WebDriverWait(driver, 10) # 设置显性等待时间 qq_l (By.XPATH, //div[classcontent-btns]//a) wait.until(EC.visibility_of_element_located(qq_l)) # 设置显性等待条件 driver.find_element(*qq_l).click() # 设置等待条件此方法会判断iframe是否可用并且会自动切换到iframe中 wait.until(EC.frame_to_be_available_and_switch_to_it(login_frame_qq)) driver.find_element_by_id(switcher_plogin).click() driver.find_element_by_id(u).send_keys(test) driver.find_element_by_id(p).send_keys(test) driver.find_element_by_id(login_button).click() time.sleep(2) driver.quit() # 关闭浏览器kill掉chromedriver进程四、alert弹出框操作网页上的弹出框分两种一种是页面弹出框 这是一个html页面元素可见时是能定位到并进行操作的另一种则是alert弹出框这是是js里的alert弹框而selenium只能定位到html元素那么像这种alert弹出框如何处理呢既然是js那么我们就用js来处理。页面弹出框​它是一个html页面元素只是需要由用户在页面的操作中触发弹出因此处理这种类型的弹出框一般分为两步第一步执行触发操作之后等待弹出框出现第二步定位弹出框中的元素并操作​如百度登录的弹出框import time from selenium import webdriver from selenium.webdriver.support.wait import WebDriverWait from selenium.webdriver.support import expected_conditions as EC from selenium.webdriver.common.by import By # By模块封装了8大定位方法名 driver webdriver.Chrome() driver.get(http://www.baidu.com) driver.find_element_by_xpath(//div[idu1]//a[nametj_login]).click() # 用户名登陆定位表达式 loc (By.ID, TANGRAM__PSP_11__footerULoginBtn) # 等待时间10秒轮循周期默认0.5秒一次 WebDriverWait(driver, 10).until(EC.visibility_of_element_located(loc)) # 操作满足条件之后的元素 driver.find_element(*loc).click() time.sleep(2) driver.quit()alert弹出框​alert弹出框的处理方式第一步使用swtich_to.alert切换到弹出框建议先使用显性等待EC.alert_is_present()判断弹出框是否可见或者强制等待0.5stime.sleep(0.5)第二步使用Alert类提供的一系列操作方法对弹窗进行操作accept() 是dismiss() 否Send_keys() 往弹出框里输入文本text() 获取弹框里的内容import time from selenium import webdriver from selenium.webdriver.support.wait import WebDriverWait from selenium.webdriver.support import expected_conditions as EC # 启动Chromedriver并与Chromedriver开启会话 driver webdriver.Chrome() driver.maximize_window() driver.get(https://www.w3school.com.cn/tiy/t.asp?fjs_alert) wait WebDriverWait(driver, 10) wait.until(EC.frame_to_be_available_and_switch_to_it(iframeResult)) # 触发alert弹框 driver.find_element_by_xpath(//button[text()试一试]).click() wait.until(EC.alert_is_present()) time.sleep(3) # 这里是为了看下效果 alert driver.switch_to.alert # Alert类的实例化切换到alert alert.accept() # 是 # dismiss() 否 # text() 获取弹框里的内容 # Send_keys() 往弹出框里输入文本 driver.quit()五、总结最后感谢每一个认真阅读我文章的人礼尚往来总是要有的虽然不是什么很值钱的东西如果你用得到的话可以直接拿走这些资料对于做【软件测试】的朋友来说应该是最全面最完整的备战仓库这个仓库也陪伴我走过了最艰难的路程希望也能帮助到你凡事要趁早特别是技术行业一定要提升技术功底。
版权声明:本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若内容造成侵权/违法违规/事实不符,请联系邮箱:809451989@qq.com进行投诉反馈,一经查实,立即删除!

为什么浏览器打开是2345网址导航淘宝店铺可以做网站优化么

在过去的几年里,我们已经习惯了在社交媒体平台上发布状态、分享照片和转发文章——内容是“成品”,互动是喜欢和评论。但与人工智能的对话是不同的:它不是一张图片或一段文字,而是一个来来往往的思考过程。但这种兴奋往往只停留在…

张小明 2026/1/17 23:15:46 网站建设

建站代理设计师培训总结

📊 一、渗透测试概述与职业前景1.1 什么是渗透测试?渗透测试(Penetration Testing)是通过模拟黑客攻击的方式,对目标系统进行安全性评估的过程。与黑客攻击不同,渗透测试是合法、授权、有计划的安全测试。1…

张小明 2026/1/17 23:15:46 网站建设

山东做网站建设的好公司排名东莞网站推广衣裙

3步搞定群晖NAS百度网盘同步:告别手动传输的烦恼 【免费下载链接】synology-baiduNetdisk-package 项目地址: https://gitcode.com/gh_mirrors/sy/synology-baiduNetdisk-package 还在为群晖NAS和百度网盘之间的文件传输而头疼吗?每次都要在电脑…

张小明 2026/1/17 23:15:47 网站建设

建站之星网站建设下载版移动宽带怎么网上续费

PyTorch WebAssembly移植实验:Miniconda-Python3.9准备环境 在现代AI应用向边缘端和浏览器迁移的浪潮中,如何让像PyTorch这样的重型深度学习框架“走进”用户的浏览器,成为一个极具挑战又充满前景的技术方向。WebAssembly(Wasm&am…

张小明 2026/1/17 23:15:51 网站建设

做那种网站受欢迎网络架设

快速体验 打开 InsCode(快马)平台 https://www.inscode.net输入框内输入如下内容: 开发一个面向新手的交互式指导应用,功能:1. 卡通化界面引导;2. 每一步都有截图标注;3. 错误操作预警;4. 简易诊断工具。要…

张小明 2026/1/17 23:15:50 网站建设

电子商务网站建设专业主修课程济南外贸网站

第一章:C# 12顶级语句的演进与核心价值C# 12 对顶级语句(Top-Level Statements)进行了进一步优化,使其在简化程序入口点方面更加成熟和实用。开发者无需再编写冗长的 class Program 和 static void Main 方法,即可直接…

张小明 2026/1/17 23:15:49 网站建设