2026/2/11 3:04:20
网站建设
项目流程
运河建设管理网站,网站建设工资,制作网站教学设计,中国机械工业网一、突破基础#xff1a;三大高阶定位策略动态元素智能捕获# 使用CSS选择器组合定位动态ID元素 element driver.find_element(By.CSS_SELECTOR, button[id*submit_][class^btn-])相对定位的实战应用# 通过父元素定位嵌套结构 parent driver.find_el…一、突破基础三大高阶定位策略动态元素智能捕获# 使用CSS选择器组合定位动态ID元素 element driver.find_element(By.CSS_SELECTOR, button[id*submit_][class^btn-])相对定位的实战应用# 通过父元素定位嵌套结构 parent driver.find_element(By.ID, payment-form) child parent.find_element(By.XPATH, ./div/input[data-qacard-number])Shadow DOM穿透技术# 处理Web Components组件 shadow_host driver.find_element(By.TAG_NAME, custom-element) shadow_root shadow_host.shadow_root hidden_input shadow_root.find_element(By.CSS_SELECTOR, .internal-input)二、等待机制深度优化等待类型代码示例适用场景混合等待WebDriverWait EC.visibility_of_element_located动态加载内容AJAX专属等待EC.invisibility_of_element_located((By.ID, loader))数据异步请求自定义条件等待lambda d: d.execute_script(return jQuery.active 0)jQuery异步操作三、框架设计进阶实践Page Object Model 2.0 架构class CheckoutPage(BasePage): def __init__(self, driver): super().__init__(driver) self.address_field Locator(By.ID, shipping-address) self.payment_card DynamicLocator(//div[classcard]/span[text(){}]) def select_payment(self, card_type): self.click(self.payment_card.format(card_type)) return PaymentDetailsPage(self.driver)关键优势元素定位与业务逻辑解耦支持参数化动态定位器实现页面流的自然跳转四、异常处理与日志体系def safe_click(element): try: element.click() except (StaleElementReferenceException, ElementClickInterceptedException): logging.warning(元素状态异常尝试JS点击) driver.execute_script(arguments[0].click();, element) capture_screenshot(driver, click_retry)日志规范建议按模块分级记录DEBUG/INFO/ERROR失败时自动截屏DOM快照集成Allure生成可视化报告五、跨浏览器与并行化方案# pytest分布式执行配置 pytest.mark.parametrize(browser, [chrome, firefox, edge]) def test_checkout(browser): with DriverFactory(browser) as driver: CheckoutPage(driver).complete_purchase() # Jenkins集成命令 # pytest -n 4 --browserall --htmlreport.html六、容器化部署实践# Dockerfile示例 FROM selenium/node-chrome:4.0.0 COPY test_suite /app RUN pip install -r requirements.txt CMD [pytest, --grid-url, http://hub:4444]CI/CD流程代码提交 → 触发镜像构建 → 启动Selenium Grid → 并行执行用例 → Allure报告推送企微