您当前的位置: 首页 >  Python

MangataTS

暂无认证

  • 0浏览

    0关注

    423博文

    0收益

  • 0浏览

    0点赞

    0打赏

    0留言

私信
关注
热门博文

浅谈selenium的webdriver(python自动化)

MangataTS 发布时间:2022-02-07 20:55:13 ,浏览量:0

提前约定一些变量
from selenium import webdriver
driver = webdriver.Chrome()
url="xxx"
driver.get(url)
定位方法 通过元素id定位
driver.find_element(By.ID,'id')
通过元素name定位
driver.find_element(By.NAME,'name')
通过类名进行定位
driver.find_element(By.CLASS_NAME,'class_name')
通过标签定位
driver.find_element(By.TAG_NAME,'tag_name')
通过xpath表达式定位
driver.find_element(By.XPATH,'xpath')
通过css选择器进行定位
driver.find_element(By.CSS_SELECTOR,'css_selector')
通过完整超链接定位
driver.find_element(By.LINK_TEXT,'link_text')
通过部分链接定位
driver.find_element(By.PARTIAL_LINK_TEXT,'partial_link_text')
webdriver的成员&函数 获取当前页面的title
title = driver.title
print(title)
获取当前页的url
url = driver.current_url
print(url)
获得输入框的尺寸
input_size = driver.find_element(By.ID,'id').size
print(input_size)
获得文本信息

注意:不能获取到输入框的文本信息,下文会介绍怎么获取

text = driver.find_element(By.ID,'id').text
print(text)
返回元素的属性值, 可以是 id、 name、 type 或其他任意属性
attribute = driver.find_element(By.ID,'id').get_attribute('type')
print(attribute)
返回元素的结果是否可见, 返回结果为 True 或 False
result = driver.find_element(By.ID,'id').is_displayed()
print(result)
向input框send信息
driver.find_element(By.ID,'id').send_keys("xxx")
关闭所有标签页
driver.quit()
关于输入框文本获取

上面已经提到了通过text不能获取到输入框的数据,于是我们有下面三种方式去获取

方法一
  • 首先先往input框里面send一些东西
driver.find_element(By.ID,'id').send_keys('xxx')
  • 然后通过attr获取value值,这里需要注意:使用这个方法需要保证input框有value这个属性
result = driver.execute_script('return $("#id").attr("name");')
print(result)
方法二

直接通过js获取定位的数据,通过.val()的方法获取

result = driver.execute_script('return $("#id").val();')
print(result)
方法三(推荐使用)

通过seleniumget_attribute获取

result = driver.find_element(By.ID,'id').get_attribute('value')
print(result)
一些异常

后续会逐步更新

NoSuchElementException

这个异常发生在没找到该元素造成的,对于一些定位失败的时候我们就可以处理

from selenium.common.exceptions import NoSuchElementException
try:
    tt = driver.find_element(By.XPATH, '//*[@id="panel"]/div[3]/div/div[1]/div/div/form/div[2]/div[1]/label/div/input').get_attribute('value')
    tt=tt.replace(" ",",")
    tt=tt.replace("-",",")
    # print(tt)
    driver.find_element(By.NAME,'tag').click()  # 点击标签框
    #
    driver.find_element(By.NAME,'tag').clear()  # 清空框
    driver.find_element(By.NAME,'tag').send_keys(tt)  # 自动敲入用户名
    #
    driver.find_element(By.XPATH,'//*[@id="panel"]/div[3]/div/div[1]/div/div/form/div[5]/div/button[1]').click()# 点击“保存”按钮
except NoSuchElementException:
    print("no page ",ipp)
关注
打赏
1665836431
查看更多评论
立即登录/注册

微信扫码登录

0.0376s