Python selenium find_element()示例详解

这篇具有很好参考价值的文章主要介绍了Python selenium find_element()示例详解。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。

selenium有以下定位方式:

1

2

3

4

5

6

7

8

driver.find_element_by_id(‘id')

driver.find_element_by_xpath('xpath')

driver.find_element_by_link_text('link_text')

driver.find_element_by_partial_link_text('partial_link_text')

driver.find_element_by_name('name')

driver.find_element_by_tag_name('tag_name')

driver.find_element_by_class_name('class_name')

driver.find_element_by_css_selector('css_selector')

但我们看下源码:

D:\Program Files\Python27\Lib\site-packages\selenium\webdriver\remote\webdriver.py

可以看到,上面那些定位方式,实际上都是调用的driver.find_element(by, value)

Python selenium find_element()示例详解,python,selenium,软件测试,程序员,接口测试,自动化测试,测试工程师

我们继续看下find_element()的源码,大部分方法最终全是通过By.CSS_SELECTOR来实现的查找

Python selenium find_element()示例详解,python,selenium,软件测试,程序员,接口测试,自动化测试,测试工程师

那By又都有哪些条件呢?

D:\Program Files\Python27\Lib\site-packages\selenium\webdriver\common\by.py

继续看源码,可以看到下面8种

ID = "id"
XPATH = "xpath"
LINK_TEXT = "link text"
PARTIAL_LINK_TEXT = "partial link text"
NAME = "name"
TAG_NAME = "tag name"
CLASS_NAME = "class name"
CSS_SELECTOR = "css selector"

Python selenium find_element()示例详解,python,selenium,软件测试,程序员,接口测试,自动化测试,测试工程师

所以我们以后就都只用find_element()就好了,因为最终实际上也都是调用的这个方法。

简单封装一下,以后就记住find_element()一个方法即可。

1

2

3

4

5

6

7

8

9

10

11

12

13

14

15

16

17

18

19

20

21

22

23

24

25

26

27

28

29

30

31

32

33

34

35

36

37

38

39

40

41

42

43

44

45

46

47

48

49

50

51

52

53

54

55

56

57

58

59

60

61

62

63

64

65

66

67

68

69

70

71

72

73

74

75

76

from selenium.common.exceptions import TimeoutException

from selenium.webdriver.support.ui import WebDriverWait

from appium import webdriver

class BasePage(object):

    def split_locator(self, locator):

        """

        分解定位表达式,如'css,.username',拆分后返回'css selector'和定位表达式'.username'(class为username的元素)

        :param locator: 定位方法+定位表达式组合字符串,如'css,.username'

        :return: locator_dict[by], value:返回定位方式和定位表达式

        """

        by = locator.split(',')[0]

        value = locator.split(',')[1]

        locator_dict = {

            'id': 'id',

            'name': 'name',

            'class': 'class name',

            'tag': 'tag name',

            'link': 'link text',

            'plink': 'partial link text',

            'xpath': 'xpath',

            'css': 'css selector',

        }

        if by not in locator_dict.keys():

            raise NameError("wrong locator!'id','name','class','tag','link','plink','xpath','css',exp:'id,username'")

        return locator_dict[by], value

    def wait_element(self, locator, sec=30):

        """

        等待元素出现

        :param locator: 定位方法+定位表达式组合字符串,用逗号分隔,如'css,.username'

        :param sec:等待秒数

        """

        by, value = self.split_locator(locator)

        try:

            WebDriverWait(self.driver, sec, 1).until(lambda x: x.find_element(by=by, value=value),message='element not found!!!')

            log.info(u'等待元素:%s' % locator)

        return True

        except TimeoutException:

            return False

        except Exception, e:

            raise e

     

    def get_element(self, locator, sec=60):

        """

        获取一个元素

        :param locator: 定位方法+定位表达式组合字符串,用逗号分隔,如'css,.username'

        :param sec:等待秒数

        :return: 元素可找到返回element对象,否则返回False

        """

        if self.wait_element(locator, sec):

            by, value = self.split_locator(locator)

            try:

                element = self.driver.find_element(by=by, value=value)

                log.info(u'获取元素:%s' % locator)

                return element

            except Exception, e:

                raise e

        else:

            return False

    def get_elements(self, locator):

        """

        获取一组元素

        :param locator: 定位方法+定位表达式组合字符串,用逗号分隔,如'css,.username'

        :return: elements

        """

        by, value = self.split_locator(locator)

        try:

            elements = WebDriverWait(self.driver, 60, 1).until(lambda x: x.find_elements(by=by, value=value))

            log.info(u'获取元素列表:%s' % locator)

            return elements

        except Exception, e:

            raise e

以后调用,先定义元素,如

button = "id,su" # 页面上id为su的元素

在用例中查找时,只要写

find_element(button)

​现在我也找了很多测试的朋友,做了一个分享技术的交流群,共享了很多我们收集的技术文档和视频教程。
如果你不想再体验自学时找不到资源,没人解答问题,坚持几天便放弃的感受
可以加入我们一起交流。而且还有很多在自动化,性能,安全,测试开发等等方面有一定建树的技术大牛
分享他们的经验,还会分享很多直播讲座和技术沙龙
可以免费学习!划重点!开源的!!!
qq群号:485187702【暗号:csdn11】

最后感谢每一个认真阅读我文章的人,看着粉丝一路的上涨和关注,礼尚往来总是要有的,虽然不是什么很值钱的东西,如果你用得到的话可以直接拿走! 希望能帮助到你!【100%无套路免费领取】

Python selenium find_element()示例详解,python,selenium,软件测试,程序员,接口测试,自动化测试,测试工程师

Python selenium find_element()示例详解,python,selenium,软件测试,程序员,接口测试,自动化测试,测试工程师文章来源地址https://www.toymoban.com/news/detail-787206.html

到了这里,关于Python selenium find_element()示例详解的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处: 如若内容造成侵权/违法违规/事实不符,请点击违法举报进行投诉反馈,一经查实,立即删除!

领支付宝红包 赞助服务器费用

相关文章

  • selenium+find_elements用法

    1、假如我们遇到多个标签的class一样,比如像下面这样的 我们可以采用js语法去定位,比如:

    2024年02月07日
    浏览(31)
  • selenium新版使用find_element/find_elements函数锁定元素(替换原有find_element_by_xx)

    css选择器请参考:网络爬虫之css选择器 原来的 find_element_by_xx 都被修改为 find_element (返回匹配到的第一个元素)或 find_elements (返回全部的匹配元素) 选择 标签a的href属性 根据css选择器选择 span class=\\\"text\\\"xxxx/span

    2024年02月03日
    浏览(34)
  • selenium---元素定位(find_element)

    find_element属于定位元素的一种方法,包含了常用的定位方法。 在使用find——element 时 一定要导入相关的包,不然会报错 以百度页面为例: 选中搜索框,右键点击检查 本篇一切方法都是基于此。 1.选择要使用的浏览器和搜索网站,以Chrome浏览器和百度为例 2.以 id 为例 从上面

    2024年01月16日
    浏览(30)
  • selenium之find_elements的妙用

    最近因为工作上的需要(我不是测试,不是前端,也不是测试),任务就是下载大量的文件,其中遇到一个页面有多个需要下载的对象,因为是刚入门selenium,很多功能还在摸索。 1.找到所有满足条件的页面元素 driver.find_elements(By.XPATH, 路径) 一般是需要提取所有满足条件的元

    2024年02月11日
    浏览(30)
  • python webdriver之find_element(python3.10版本下的变化)

    最近在用python练习,3.10版本下的python使用webdriver时,在百度各论坛或CSDN里,查到的获取元素方法都是 find_element_by_XX,比如 但是在这个版本的python里,每次这样使用都会报错说没有这种函数,在实验很多次之后发现,现在只能用 find_element(by=\\\'\\\',value=\\\'\\\') 其中by里可以是id、na

    2024年02月12日
    浏览(33)
  • selenium的find_elements非常慢的解决办法

    在使用find_elements的过程中发现,有时候比较快,有时候非常慢,慢的时候可以达到几分钟,实在不能忍受,必须要解决。 后来看到国外一片文章(抱歉地址忘记了)说,find_elements慢的原因是页面上有很多ajax的请求,默认模式下会等待这些ajax的加载完成后才执行,所以阻塞

    2024年02月03日
    浏览(32)
  • selenium driver.find_element 报错 invalid argument: invalid locator

    selenium.common.exceptions.InvalidArgumentException: Message: invalid argument: invalid locator 报错信息:invalid argument: invalid locator 提示的是 定位器 locator 的 参数 argument 是无效的, 为什么无效,是我代码写错了, driver.find_element( \\\'//*[@id=\\\"staffid\\\' ).send_keys(‘handsome’) 定位器 locator 少了最重要的参

    2024年01月25日
    浏览(36)
  • Selenium中find_element_by_id无法使用,改用driver.find_element(by=By.ID, value=None)

    在自学selenium的时候,可能教学视频太老了,WebDriver已经没有find_element_by_id这个方法了。 执行结果如下: bug翻译如下: AttributeError:“WebDriver”对象没有属性“find_element_by_id” 通过自动补齐代码发现,WebDriver里面还是有find_element这个方法的。 通过按住Ctrl,点击该方法,我们

    2024年02月11日
    浏览(35)
  • selenium模块中的find_element_by_id方法无法使用,改用driver.find_element(by=By.ID, value=None)

    在学习selenium模块的时候,由于是在白嫖的,往年教程 点击运行后报错 AttributeError: \\\'WebDriver\\\' object has no attribute \\\'find_element_by_id\\\' \\\'WebDriver\\\'没有find_element_by_id这个方法 搜索出来的基本都是就这个方法进行讲解 在尝试方法中发现,finde_element这个方法有 点开配置文件,发现通过find换了

    2024年02月11日
    浏览(33)
  • selenium4.3.0模块中的find_element_by_id方法无法使用,改用driver.find_element(by=By.ID, value=None)

    在selenium最新版本4.3.0中, 使用之前的find_element_by_id会报错 Ctrl+点击find_element,查看代码 最新版本,改为了driver.find_element(By.ID, ‘foo’) 在自己的代码中修改,发现By会被pycharm下划线提示报错,再次查看代码 发现需要import By 再次修改自己的代码,运行通过

    2024年02月13日
    浏览(33)

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

请作者喝杯咖啡吧~博客赞助

支付宝扫一扫领取红包,优惠每天领

二维码1

领取红包

二维码2

领红包