当前位置: 首页 > news >正文

Selenium番外篇文本查找、元素高亮、截图、无头运行

Selenium根据文本查找元素


```python
def find_element_with_text(self, loc, attribute, text):try:WebDriverWait(self.driver, 5).until(EC.all_of(EC.text_to_be_present_in_element_attribute(loc, attribute, text)))element = self.driver.find_element(*loc)if isinstance(element, NoneType):logging.error("%s 页面中未能找到 %s 元素" % (self, loc))else:return elementexcept Exception as e:self.save_picture('出现异常')logging.info(e)else:return element

## Selenium 截图​```python
def save_picture(self, pic_name):try:projectPath = os.path.dirname(os.path.dirname(os.path.dirname(os.path.abspath(__file__))))pic_dir = projectPath + "\\pictures\\" + time.strftime('%Y-%m-%d')# logging.info('图片文件夹路径为:'+pic_dir)if os.path.exists(pic_dir):# logging.info('图片文件夹已存在路径为:' + pic_dir)passelse:# logging.info('图片文件夹路径不存在创建文件夹' )os.makedirs(pic_dir)pic_name = pic_dir + '\\' + pic_name + time.strftime('%Y-%m-%d %H_%M_%S') + '.png'# logging.info('图片文件路径为:'+pic_name)self.driver.get_screenshot_as_file(pic_name)allure.attach.file(pic_name, attachment_type=allure.attachment_type.PNG)except Exception as e:traceback.print_stack()logging.info(e)else:logging.info('截图路径:%s' % pic_name)return pic_name

selenium高亮元素

def set_high_light_elment(self, element):"""高亮web元素。Args:element:WebElement:web元素"""element_style=element.get_attribute('style')self.mark_dom_text(element_style,200,200)script = '''arguments[0].setAttribute('style','background: #e0e7c8; border:2px solid red;');{}'''.format(element_style)logging.info('用js设置定位元素高亮...')# 调用js将传入参数的页面元素对象的背景颜色和边框颜色分别设定为黄色和红色# self.driver.execute_script("arguments[0].setAttribute('style', arguments[1]);", element, "background: yellow; border:2px solid red;")try:# 方案一# self.driver.execute_script("arguments[0].setAttribute('style', arguments[1]);", element, "background: yellow; border:2px solid red;{}".format(element_style))# 方案二self.driver.execute_script(script,element)except Exception as e:traceback.print_stack()traceback.print_exception(e)

​Selenium 无头模式运行

def test_chrome_options_headless(self):

chrome_options = webdriver.ChromeOptions()
# 无头模式
# chrome_options.add_argument("--headless")
# 设置窗口大小
# chrome_options.add_argument("--window-size=800,600")
# 窗口最大化
chrome_options.add_argument("--start-maximized")
# 设置用户数据
chrome_options.add_argument("user-data-dir=/path/to/your/custom/profile")driver = webdriver.Chrome(options=chrome_options)driver.get('https://www.baidu.com')
time.sleep(5)
driver.find_element(By.XPATH, '''//*[@id="kw"]''').send_keys('Chrome')
driver.find_element(By.XPATH, '''//*[@id="su"]''').click()
assert 'Chrome' in driver.page_source

http://www.lryc.cn/news/360268.html

相关文章:

  • Java 22的FFM API,比起Java 21的虚拟线程
  • 用c语言实现简易三子棋
  • 2024年华为OD机试真题-执行时长-Python-OD统一考试(C卷D卷)
  • 对未知程序所创建的 PDF 文档的折叠书签层级全展开导致丢签的一种解决方法
  • 计算机系统结构之FORK和JOIN
  • Yocto - virtual/kernel介绍
  • 如何在 DigitalOcean 云服务器上创建自定义品牌名称服务器
  • 心链6----开发主页以及后端数据插入(多线程并发)定时任务
  • 【Linux】日志管理
  • AI 绘画爆火背后:扩散模型原理及实现
  • 详解智慧互联网医院系统源码:开发医院小程序教学
  • 【技术实操】银河高级服务器操作系统实例分享,数据库日志文件属主不对问题分析
  • 函数的创建和调用
  • 数模混合芯片设计中的修调技术是什么?
  • MySQL 自定义函数(实验报告)
  • 一次职业院校漏洞挖掘
  • 洪师傅代驾系统开发 支持公众号H5小程序APP 后端Java源码
  • View->Bitmap缩放到自定义ViewGroup的任意区域(Matrix方式绘制Bitmap)
  • Centos 7部署NTP
  • 【前缀和】42. 接雨水
  • 我的名字叫大数据
  • 数据库漫谈-infomix
  • 【Qt】Qt界面美化指南:深入理解QSS样式表的应用与实践
  • 七彩云南文化旅游网站的设计
  • 7-zip安装教程
  • oracle 12c DB卸载流程
  • Docker学习笔记 - 创建自己的image
  • java web爬虫
  • MySQL开发教程和具体应用案例
  • QT C++ 模型视图结构 QTableView 简单例子