昼昼菜鸟记--2024/5/7

1.try/except 的使用,判断异常情况


try:
     ****
except   异常:
     ****
常见异常:syntaxerror  语法错误    systemerror 编译器系统错误 
                   systemexit  编译器进程被关闭
                   NoSuchElementException  定位元素在页面上不存在
  //详细可见csdn收藏夹(python try语句相关使用(try/except/else/finally))

try:
    a=b
    print(a)
except SyntaxError:
    print("<<<<syntaxerror")
except NameError:
    print("<<<<nameerror")

print("so difficult!")

2.输出台无法输出情况,但可以在终端运行 python youfile.py 运行

可以考虑安装扩展code runnner

3.webdriverwait 等待时间用法

开头调用:from selenium.webdriver.support import expected_conditions as EC

用于判断当前页面是否有你所需要的元素

  1. title_is: 等待页面标题与给定的字符串完全匹配。
  2. title_contains: 等待页面标题包含给定的字符串。
  3. presence_of_element_located: 等待页面上出现一个元素,可以使用By定位到它。
  4. element_to_be_clickable: 等待一个元素变得可点击(通常是可见的并且enabled)。
  5. visibility_of_element_located: 等待一个元素在页面上可见(不一定要可点击)。
  6. visibility_of: 等待一个特定的元素变得可见。
  7. text_to_be_present_in_element: 等待某个元素的文本包含特定的字符串。
  8. text_to_be_present_in_element_value: 等待某个表单元素的值包含特定的字符串。
  9. frame_to_be_available_and_switch_to_it: 等待一个iframe变得可用,自动切换到它。
  10. invisibility_of_element_located: 等待一个元素变得不可见。
  11. element_to_be_selected: 等待一个HTML选项变得被选中。
  12. element_located_to_be_selected: 等待一个元素(如单选按钮或复选框)被选中。
  13. alert_is_present: 等待一个警告框出现。

webdriverwait.until显式等待使用方法

webdrriverwait(driver,timeout,poll-frequency=每隔几秒执行until中的方法)

from selenium import webdriver
from selenium.webdrivwer.common.by import By
from selenium.webdriver.support.ui import WebDriverWait
from selenium.webdriver.support import expected_conditions as EC

br = webdriver.Chrome()
wait = webDriverWait(br,10)
br.get("https://kimi.moonshot.cn/")
title_element = wait.until(EC.presence_of_element_located((By.TAG_NAME,"title")))
#等待直到网页中<titile>元素出现,即浏览器加载了页面的标题部分

4.读取本地excel文件中的内容

import pandas as pd

excel_file = r'D:\桌面\zyj\universities.xlsx'
df = pd.read_excel(excel_file)

print(df.head())  #输出前几行

5.如何定位到页面唯一标识

使用F12后快捷键ctrl+F,搜索这个biaoshi(id或其他)是否在前端代码中存在

  send_button = wait.until(EC.presence_of_element_located((By.CSS_SELECTOR, 'button[data-testid="msh-chatinput-send-button"]')))
           

其中data-testid常常用于测试目的,以便于在自动化测试脚本中定位和识别这个按钮

  if not send_button.get_attribute("disabled"):

get_attribute 是一个webdriver方法,允许获取对应元素的属性值。

eg:下面HTML代码中当输入框中没有内容时,发送按钮为disable

<button 
class="MuiButtonBase-root Mui-disabled MuiIconButton-root Mui-disabled MuiIconButton-sizeMedium css-i0tiaf" 
tabindex="-1" 
type="button"
data-testid="msh-chatinput-send-button" 
id="send-button" 
disabled="">
</button>

此情况用于获取disabled的属性已经明确设置为不可用

如果按钮的 "disabled" 属性被设置为 ""(空字符串,表示禁用状态)

disabled:这是一个布尔属性,当出现在HTML元素中时,等同于 disabled="disabled"。它表明按钮在HTML中被定义为不可用。

6.用xpath选择器来定位页面上的特定元素

query_element = br.find_element_by_xpath('//div[@data-slate-node="element"]//span[@data-slate-string="true"]')

这段代码的目的也就是找到输入框输入的内容所在标签,如下图“今天天气”

  • //:这表示从当前页面的根节点开始搜索,而不是仅在当前节点的子元素中搜索。

  • div[@data-slate-node="element"]:这部分定位了一个div元素,它的data-slate-node属性值为"element"

  • //span[@data-slate-string="true"]:这部分定位了在前面找到的div元素内部的span元素,其data-slate-string属性值为"true"

  • //div[@data-slate-node="element"]//span[@data-slate-string="true"]:整个表达式表示从页面的根节点开始,查找任意一个data-slate-node属性为"element"div元素,然后在它的后代中查找任意一个data-slate-string属性为"true"span元素。

7.获取定位元素文本内容  .text

if query_element.text!="1"

如果元素文本内容不是1,内部代码继续运行

8.在原来基础上向输入框加入固定文本

element.text = f"联网查询,分析{df.iloc[i, 1]}目前用的学校名称,最后返回数据{'message':'学校名称'}"

.iloc是基于行和列的位置索引

df.iloc[i, 1]   访问DataFrame df 中索引为 i 的行,第二列(索引从0开始,所以索引1是第二列)的值。

  • 13
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值