写点什么

selenium 源码通读·7 |webdriver/common/by.py-By 类分析

作者:虫无涯
  • 2023-04-19
    陕西
  • 本文字数:1121 字

    阅读完需:约 4 分钟

1 源码路径

selenium/webdriver/common/by.py
复制代码


2 功能描述

  • 翻译:一组受支持的定位器策略,即支持的定位方式

  • 定位方式包含八种:


class By(object):    """    Set of supported locator strategies.    """
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"
复制代码

3 使用方法

  • 例如:


driver.find_element(By.ID, "xx").click()
复制代码


  • 另一种写法:


driver.find_element_by_id( "xx").click()
复制代码


  • 两种写法的区别,我们查看find_element_by_id的源码:


    def find_element_by_id(self, id_):        """Finds an element by id.
:Args: - id\_ - The id of the element to be found.
:Returns: - WebElement - the element if it was found
:Raises: - NoSuchElementException - if the element wasn't found
:Usage: element = driver.find_element_by_id('foo') """ return self.find_element(by=By.ID, value=id_)
复制代码


  • 从上发现其实,find_element_by_id的方法是根据By.ID来实现的,所以两种方式都是可以的;

  • 其他的定位方式都是类似的。

4 实例

  • 替换之前的定位方式为By.ID


# -*- coding:utf-8 -*-# 作者:NoamaNelson# 日期:2022/5/17# 文件名称:selen_by.py# 作用:验证By方法# 联系:VX(NoamaNelson)# 博客:https://blog.csdn.net/NoamaNelson
from selenium import webdriverfrom selenium.webdriver.common.keys import Keysfrom selenium.webdriver.common.action_chains import ActionChainsfrom selenium.webdriver.common.by import Byimport time
driver = webdriver.Chrome()driver.get("http://www.baidu.com")
# driver.find_element_by_id("kw").send_keys("NoamaNelson")driver.find_element(By.ID, "kw").send_keys("NoamaNelson")time.sleep(1)# driver.find_element_by_id("kw").send_keys(Keys.ENTER)driver.find_element(By.ID, "kw").send_keys(Keys.ENTER)driver.maximize_window()time.sleep(0.5)# driver.find_element_by_id("kw").send_keys(Keys.CONTROL,"a")driver.find_element(By.ID, "kw").send_keys(Keys.CONTROL, "a")time.sleep(0.5)# driver.find_element_by_id("kw").send_keys("N")driver.find_element(By.ID, "kw").send_keys("N")# su = driver.find_element_by_id("su")su = driver.find_element(By.ID, "su")ActionChains(driver).click(su).perform()time.sleep(1)driver.quit()
复制代码


发布于: 刚刚阅读数: 4
用户头像

虫无涯

关注

专注测试领域各种技术研究、分享和交流~ 2019-12-11 加入

CSDN测试领域优质创作者 | CSDN博客专家 | 阿里云专家博主 | 华为云享专家 | 51CTO专家博主

评论

发布
暂无评论
selenium源码通读·7 |webdriver/common/by.py-By类分析_测试_虫无涯_InfoQ写作社区