浅谈selenium的webdriver(python自动化)

提前约定一些变量

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)
上一篇:炉石传说 黑石山


下一篇:springboot实战小项目-前端-头部设计