简约门户网站源码三亚建设信息网站
2026/6/10 9:59:33 网站建设 项目流程
简约门户网站源码,三亚建设信息网站,网站建设丨金手指15,提升wordpress性能的插件Selenium是一个用于Web应用程序测试的工具。Selenium测试直接运行在浏览器中#xff0c;就像真正的用户在操作一样。支持的浏览器包括IE#xff08;7, 8, 9, 10, 11#xff09;#xff0c;Mozilla Firefox#xff0c;Safari#xff0c;Google Chrome#xff0c;Opera就像真正的用户在操作一样。支持的浏览器包括IE7, 8, 9, 10, 11Mozilla FirefoxSafariGoogle ChromeOperaEdge等。这个工具的主要功能包括测试与浏览器的兼容性——测试应用程序看是否能够很好得工作在不同浏览器和操作系统之上。随着时代的发展在使用python做自动化时与之前差生了很大的变化这些变化都是一个老程序员所必须要踩坑的地方也是由于已经会了老版本在使用新版本的时候需要多次探索本文从当前最新版的Selenium出发以Chrome驱动为例总结了新版的使用方法免得到处去搜索、踩坑。01 设置驱动当前Selenium版本4.3.0请核对你的版本是否是4.0以上的版本注意请查看你的浏览器版本然后再去下载对应的驱动通常来说版本号时一致的如果没有你的版本号那就选择和你浏览器版本号最相近的版本。1. selenium4推荐方法由于传统的设置驱动方式过于繁琐因此GitHub大佬SergeyPirogov写了浏览器驱动管理器可以使设置驱动变得更加方便。首先需要安装该管理器使用以下命令pip install webdriver-managerAI写代码bash1然后导入该包from webdriver_manager.chrome import ChromeDriverManagerAI写代码bash1设置service通过ChromeDriverManager().install()来获取驱动从而省去了下载驱动和设置驱动的步骤service ChromeService(executable_pathChromeDriverManager().install())AI写代码bash1然后驱动加载该servicedriver webdriver.Chrome(serviceservice)AI写代码bash1此处贴出完整代码以供参考from selenium import webdriver from selenium.webdriver.chrome.service import Service as ChromeService from webdriver_manager.chrome import ChromeDriverManager service ChromeService(executable_pathChromeDriverManager().install()) driver webdriver.Chrome(serviceservice) driver.quit()2. 传统方法这里使用传统方法来设置Selenium的驱动也就是导入webdriver然后设置可执行程序的路径。首先在Selenium4中设置驱动位置不再是直接在webdriver.Chrome中直接设置而是引入了Service。因此先导入Service的包from selenium import webdriver from selenium.webdriver.chrome.service import Service as ChromeService然后通过Service设置驱动CHROMEDRIVER_PATH替换为你的驱动位置service ChromeService(executable_pathCHROMEDRIVER_PATH)AI写代码bash1最后在webdriver.Chrome中调用这个servicedriver webdriver.Chrome(serviceservice)AI写代码bash1给出完整代码予以参考from selenium import webdriver from selenium.webdriver.chrome.service import Service as ChromeService options webdriver.ChromeOptions() options.add_experimental_option(excludeSwitches, [enable-automation]) options.add_experimental_option(useAutomationExtension, False) service ChromeService(executable_pathCHROMEDRIVER_PATH) driver webdriver.Chrome(serviceservice, optionsoptions)02 查找元素在selenium4中一系列的findElement方法如findElementByClassName、findElementById等都被整合成为了一个方法——findElement。并且通过By.method来选择你的查找元素方法例如下。如果你想根据类名查找元素你可以使用以下方法driver.findElement(By.className(className));AI写代码bash1如果你想通过css选择器来查找元素你可以使用以下方法driver.findElement(By.cssSelector(.className));AI写代码bash1这里贴出与以往对应的所有查找元素方法更新前driver.findElementByCssSelector(.className); driver.findElementById(elementId); driver.findElementByLinkText(linkText); driver.findElementByName(elementName); driver.findElementByPartialLinkText(partialText); driver.findElementByTagName(elementTagName); driver.findElementByXPath(xPath);更新后driver.find_element(By.XPATH,XPATH) driver.find_element(By.CLASS_NAME,CLASS_NAME) driver.find_element(By.CSS_SELECTOR,CSS_SELECTOR) driver.find_element(By.ID,ID) driver.find_element(By.LINK_TEXT,LINK_TEXT) driver.find_element(By.PARTIAL_LINK_TEXT,PARTIAL_LINK_TEXT) driver.find_element(By.TAG_NAME,TAG_NAME)如果你查找的是多个元素只需要将其中的find_element替换成find_elements即可。等待元素出现有时候某个元素不是直接出现的如果不做判断则会导致程序崩溃因此一般可以做异常处理这里还有等待元素出现的方法。首先需要导入等待的包from selenium.webdriver.support.ui import WebDriverWaitAI写代码bash1然后使用以下方法等待元素出现driver就是浏览器驱动timeout就是等待的时长后是判断元素是否出现的el WebDriverWait(driver, timeout3).until(lambda d: d.find_element_by_tag_name(p))AI写代码bash103 动作API动作API是网上资料比较少的因为之前的查找元素调用click等已经可以解决很多的问题了在翻看官方文档时发现selenium还支持动作API来模拟动作。动作API分为四个部分分别是键盘、鼠标、笔、滚轮。这里先说明以下公共部分的。暂停pause光标移动滚轮滚动期间会有一些时间空隙这里可以使用暂停来实现这里是支持链式调用的这里贴出官方给出的例子clickable driver.find_element(By.ID, clickable) ActionChains(driver)\ .move_to_element(clickable)\ .pause(1)\ .click_and_hold()\ .pause(1)\ .send_keys(abc)\ .perform()释放所有动作当前有动作执行时可以使用以下方法停止这些动作ActionBuilder(driver).clear_actions()AI写代码bash1键盘键盘代码表如果你有兴趣可以看一下地址在这里可以看到完整的列表。按下某键以输入shiftabc为例ActionChains(driver)\ .key_down(Keys.SHIFT)\ .send_keys(abc)\ .perform()弹起某键以输入shifta和shiftb为例ActionChains(driver)\ .key_down(Keys.SHIFT)\ .send_keys(a)\ .key_up(Keys.SHIFT)\ .send_keys(b)\ .perform()浏览器输入某串字符不指定元素ActionChains(driver)\ .send_keys(abc)\ .perform()指定元素输入字符串text_input driver.find_element(By.ID, textInput) ActionChains(driver)\ .send_keys_to_element(text_input, abc)\ .perform()h复制和粘贴cmd_ctrl Keys.COMMAND if sys.platform darwin else Keys.CONTROL ActionChains(driver)\ .send_keys(Selenium!)\ .send_keys(Keys.ARROW_LEFT)\ .key_down(Keys.SHIFT)\ .send_keys(Keys.ARROW_UP)\ .key_up(Keys.SHIFT)\ .key_down(cmd_ctrl)\ .send_keys(xvv)\ .key_up(cmd_ctrl)\ .perform()鼠标鼠标点击保持该方法将鼠标移动到元素中心与按下鼠标左键相结合。这有助于聚焦特定元素clickable driver.find_element(By.ID, clickable) ActionChains(driver)\ .click_and_hold(clickable)\ .perform()鼠标点击释放clickable driver.find_element(By.ID, click) ActionChains(driver)\ .click(clickable)\ .perform()鼠标定义的5种按键0——鼠标左键1——鼠标中键2——鼠标右键3——X1后退键4——X2前进键鼠标右击clickable driver.find_element(By.ID, clickable) ActionChains(driver)\ .context_click(clickable)\ .perform()按下鼠标3键action ActionBuilder(driver) action.pointer_action.pointer_down(MouseButton.BACK) action.pointer_action.pointer_up(MouseButton.BACK) action.perform()按下鼠标4键action ActionBuilder(driver) action.pointer_action.pointer_down(MouseButton.FORWARD) action.pointer_action.pointer_up(MouseButton.FORWARD) action.perform()鼠标双击clickable driver.find_element(By.ID, clickable) ActionChains(driver)\ .double_click(clickable)\ .perform()鼠标移动到元素上hoverable driver.find_element(By.ID, hover) ActionChains(driver)\ .move_to_element(hoverable)\ .perform()鼠标位移就是通过像素点来进行位移操作从元素左顶边进行位移mouse_tracker driver.find_element(By.ID, mouse-tracker) ActionChains(driver)\ .move_to_element_with_offset(mouse_tracker, 8, 11)\ .perform()从元素中心进行位移请期待从当前窗口左上角位移action ActionBuilder(driver) action.pointer_action.move_to_location(8, 12) action.perform()从当前鼠标位置位移ActionChains(driver)\ .move_by_offset( 13, 15)\ .perform()拖拽元素该方法首先单击并按住源元素移动到目标元素的位置然后释放鼠标。draggable driver.find_element(By.ID, draggable) droppable driver.find_element(By.ID, droppable) ActionChains(driver)\ .drag_and_drop(draggable, droppable)\ .perform()通过位移拖拽draggable driver.find_element(By.ID, draggable) start draggable.location finish driver.find_element(By.ID, droppable).location ActionChains(driver)\ .drag_and_drop_by_offset(draggable, finish[x] - start[x], finish[y] - start[y])\ .perform()笔部分浏览器生效由于笔只在部分浏览器生效这里就不写了如果你感兴趣或者有需求可以去官方文档查看这里贴出官方文档地址。滚轮只有谷歌内核浏览器生效滚动到某元素位置iframe driver.find_element(By.TAG_NAME, iframe) ActionChains(driver)\ .scroll_to_element(iframe)\ .perform()定量滚动footer driver.find_element(By.TAG_NAME, footer) delta_y footer.rect[y] ActionChains(driver)\ .scroll_by_amount(0, delta_y)\ .perform()从一个元素滚动指定量iframe driver.find_element(By.TAG_NAME, iframe) scroll_origin ScrollOrigin.from_element(iframe) ActionChains(driver)\ .scroll_from_origin(scroll_origin, 0, 200)\ .perform()从一个元素滚动并指定位移footer driver.find_element(By.TAG_NAME, footer) scroll_origin ScrollOrigin.from_element(footer, 0, -50) ActionChains(driver)\ .scroll_from_origin(scroll_origin, 0, 200)\ .perform()从一个元素的原点位移ActionChains(driver)\ .scroll_from_origin(scroll_origin, 0, 200)\ .perform()总结以上就是本文的所有内容总结了selenium4在使用过程中常见的一些坑以及官方所推荐使用的方式总结感谢每一个认真阅读我文章的人作为一位过来人也是希望大家少走一些弯路如果你不想再体验一次学习时找不到资料没人解答问题坚持几天便放弃的感受的话在这里我给大家分享一些自动化测试的学习资源希望能给你前进的路上带来帮助。软件测试面试文档我们学习必然是为了找到高薪的工作下面这些面试题是来自阿里、腾讯、字节等一线互联网大厂最新的面试资料并且有字节大佬给出了权威的解答刷完这一套面试资料相信大家都能找到满意的工作。视频文档获取方式这份文档和视频资料对于想从事【软件测试】的朋友来说应该是最全面最完整的备战仓库这个仓库也陪伴我走过了最艰难的路程希望也能帮助到你以上均可以分享点下方小卡片即可自行领取。

需要专业的网站建设服务?

联系我们获取免费的网站建设咨询和方案报价,让我们帮助您实现业务目标

立即咨询