selenium元素定位方法

selenuim提供八种元素定位方式

        1. id

        2.name

        3.class_name    (使用元素的class属性定位)

        4.tag_name (标签名称<标签名 ...../>)

        5.link_text  (定位超链接  a标签)

        6.partial_link_text  (定位超链接  a标签 模糊)

        7.XPath  (基于元素路径)

        8.CSS _selector (基于元素选择器)

id、name、class三种元素定位方式使用方法相同   区别如下:

        id:一般为唯一标识符

        name:可以重名

        class:多个命名

Xpath和CSS定位在F12中定位元素后可右键直接复制

find_element和find_elements的区别

 1.     对于find_element()的使用,他需要传入2个参数,查找方式by和值,如find_element_by_id("name")等价于find_element(By.id,'name') 习惯上写第一种
但是find_element()只会查找页面中符合条件的第一个节点,并返回

2.     如果查找的目标在网页中只有一个,那么完全可以用find_element(),但如果有多个满足要求的节点,用find_element()就只能得到第一个节点了,所以查找多个节点时,应该使用find_elements()更好.

3. 1.只查找一个元素的时候:可以使用find_element(),find_elements()
  find_element()会返回一个WebElement节点对象,但是没找到会报错,而find_elements()不会,之后返回一个空列表
2.查找多个元素的时候:只能用find_elements(),返回一个列表,列表里的元素全是WebElement节点对象
3.找到都是节点(标签)
4.如果想要获取相关内容(只对find_element()有效,列表对象没有这个属性)  使用  .text;
5.如果想要获取相关属性的值(如href对应的链接等,只对find_element()有效,列表对象没有这个属性):使用   .get_attribute("href")                                        

from selenium import webdriver
from selenium.webdriver.common.by import By
from time import sleep

def test_eight_components():
    driver = webdriver.Edge()

    driver.get("https://www.selenium.dev/selenium/web/web-form.html")

    title = driver.title
    assert title == "Web form"

    driver.implicitly_wait(0.5)

    # text_box = driver.find_element(by=By.NAME, value="my-text").send_keys("输入一个Selenium")
    # textarea_text=driver.find_element(By.XPATH,value="/html/body/main/div/form/div/div[1]/label[3]/textarea").send_keys("这是一个富文本")
    # 密码框输入在使用selenium时可能无法输入  需要使用插件
    elements=driver.find_elements(By.TAG_NAME,value="input")
    #返回所有标签为input的集合
    print(len(elements))
    print(elements)
    print(type(elements))
    #elements[1].send_keys("哈哈哈哈") 下标定位
    for el in elements:
        el.send_keys("我是一个富文本框")
        print("输入成功")
    submit_button = driver.find_element(by=By.CSS_SELECTOR, value="button").click()

    value = driver.find_element(by=By.ID, value="message").text
    # .text 用于获取文本信息
    assert value == "Received!"
    #assert函数  在没完善一个程序之前,我们不知道程序在哪里会出错,与其让它在运行时崩溃,不如在出现错误条件时就崩溃
    # 这里如果value == "Received!"是错误语句  程序就会报错
    sleep(100)
    driver.quit()


test_eight_components()

  • 3
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值