• selenium元素定位


    参考网址:https://blog.csdn.net/qi_ling/article/details/84166144?utm_source=distribute.pc_relevant.none-task


    xpath教程:https://www.runoob.com/xpath/xpath-syntax.html


    selenium-webdriver提供了强大的元素定位方法,支持以下三种方法。

    单个对象的定位方法

    多个对象的定位方法

    层级定位


    ==============================================================================


    定位单个元素
    在定位单个元素时,selenium-webdriver提示了如下一些方法对元素进行定位。

    By.id(id)

    By.name(name)

    By.className(className))

    By.tagName(name)

    By.linkText(linkText)

    By.partialLinkText(linkText)

    By.xpath(xpathExpression)

    By.cssSelector(selector)

    =======================================================================================

    定位多个元素


    findElements()方法可以返回一个符合条件的元素List组

    //定位到所有<input>标签的元素,然后输出他们的id

    List<WebElement> element = driver.findElements(By.tagName("input"));

    for (WebElement e : element)

    {

    System.out.println(e.getAttribute("id"));
    //返回页面上所有input对象的id
    }

    ==========================================================================================

    层级定位


    层级定位的思想是先定位父元素,然后再从父元素中精确定位出其我们需要选取的子元素。

    层级定位一般的应用场景是无法直接定位到需要选取的元素,但是其父元素比较容易定位,

    通过定位父元素再遍历其子元素选择需要的目标元素,或者需要定位某个元素下所有的子元素。


    //定位class为"login"的div,然后再取得它下面的所有label,并打印出他们的值


    WebElement element = driver.findElement(By.className("login"));

    List<WebElement> el = element.findElements(By.tagName("label"));

    for(WebElement e : el)

    {
    System.out.println(e.getText());


    }

    ----------------------------------------------------------------------------------------

    //层级定位


    WebElement element=driver.findElement(By.className("nav-item"));//层级定位第一步


    List<WebElement> elements=element.findElements(By.tagName("li"));//层级定位第二步


    elements.get(3).click();//层级定位第三步


    ----------------------------------------------------------------------------------------

    from selenium import webdriver
    from time import sleep

    driver = webdriver.Firefox() # 指定和打开浏览器
    url1='http://www.baidu.com'
    driver.get(url1) #打开第一个网址 #也可以写成:driver.get('http://www.baidu.com')
    sleep(5)

    driver.find_element_by_id('kw').send_keys('中国')
    driver.find_element_by_id('su').click()

    sleep(5)
    print("123")
    sleep(5)

    x = driver.find_element_by_class_name("FYB_RD").find_elements_by_tag_name("a")[0]

    print(x.text)


    y = driver.find_element_by_class_name("FYB_RD").find_elements_by_tag_name("a")[1]

    print(y.text)

    g = driver.find_element_by_class_name("FYB_RD").find_elements_by_tag_name("a")[2]

    print(g.text)

    d = driver.find_element_by_class_name("FYB_RD").find_elements_by_tag_name("a")

    for i in d:
    print(i.text)


    driver.quit()

    执行结果:

    123

    换一换

    小区出入证大赏
    李兰迪做蛋糕
    换一换

    小区出入证大赏
    李兰迪做蛋糕
    陈冠希女儿自画像
    东马不退报名费
    尼日尔踩踏事故
    孙兴慜右臂骨折
    永昌与莫雷洛解约
    2020年开学第一课
    巴基斯坦毒气泄漏
    宁波出台复工20条


    查看更多>>

    =================================================================================

  • 相关阅读:
    页面转表格并且下载
    关于表格导入
    C/C++作用域运算符::
    设计模式之观察者模式_C++
    C# 传不定参数
    C语言中的位域的使用
    C++/python求哈希值(SHA256)
    C++中纯虚函数
    类模板/函数模板实现父类指针指向子类对象(虚函数实现多态)
    Windows Socket 接口简介
  • 原文地址:https://www.cnblogs.com/xiaobaibailongma/p/12329605.html
Copyright © 2020-2023  润新知