首页 > 编程语言 >python + selenium 新手随笔 元素定位

python + selenium 新手随笔 元素定位

时间:2022-10-11 10:14:31浏览次数:68  
标签:webdriver NAME python selenium driver element 新手 find

1.

from selenium import webdriver
from selenium.webdriver.common.keys import Keys  //Key 表示键盘上的键, By 定位文本中的元素
from selenium.webdriver.common.by import By

driver = webdriver.Firefox() // 创建 FireFox 的WebDriver
driver = webdriver.Chrome()  //  Chorme的webDriver
driver.get("http://www.python.org")  //get()方法将导航到由URL给出的页面
assert "Python" in driver.title  //断言来确认标题是否含有 “Python” 字样

elem = driver.find_element(By.NAME, "q") //WebDriver提供了find_element方法去寻找元素
elem.clear()  //先清空 键盘
elem.send_keys("pycon")  // 发送键 类似于键盘输入
elem.send_keys(Keys.RETURN)  // 回车
assert "No results found." not in driver.page_source
driver.close()  // 关闭 driver()
 

 

2.  selenium  用来写测试用例  框架Pytest 以及 unittest模块编写测试用例

import unittest
from selenium import webdriver
from selenium.webdriver.common.keys import Keys
from selenium.webdriver.common.by import By

class PythonOrgSearch(unittest.TestCase): //从TestCase类继承是告诉unittest模块这是一个测试用例的方法:

    def setUp(self):  //  setUp方法是初始化的一部分。这个方法将在您将要在这个测试用例类中编写的每个测试函数之前被调用。
        self.driver = webdriver.Firefox()

    def test_search_in_python_org(self):
        driver = self.driver
        driver.get("https://www.baidu.com/")  // 百度的driver.title 是  百度一下,你就知道
        self.assertIn("百度", driver.title)
        elem = driver.find_element(By.NAME, "q")
        elem.send_keys("pycon")
        elem.send_keys(Keys.RETURN)
        self.assertNotIn("No results found.", driver.page_source)


    def tearDown(self): //tearDown方法将在每个测试方法之后被调用。这是一个可以进行所有清理操作的地方
        self.driver.close()//quit方法将退出整个浏览器,而close方法将关闭一个选项卡

if __name__ == "__main__":
    unittest.main()

3. 其中driver的几个方法

driver.close() //关闭当前页面
driver.quit() //关闭所有由当前测试脚本打开的页面   
driver.refresh() //重新加载页面,页面刷新
driver.back() //回到上一个页面
driver.forward() //切换到下一个页面
driver.get(url)方法来打开网页链接
driver.title  获取当前页面的title  属性

4. 定位元素  BY类来定位

find_element(By.ID, "id")   //  BY的各个属性 ID, NAME, XPATH, LINK_TEXT, PARTIAL_LINK_TEXT, TAG_NAME, CLASS_NAME, CSS_SELECTOR
find_element(By.NAME, "name")
find_element(By.XPATH, "xpath")
find_element(By.LINK_TEXT, "link text")
find_element(By.PARTIAL_LINK_TEXT, "partial link text")
find_element(By.TAG_NAME, "tag name")
find_element(By.CLASS_NAME, "class name")
find_element(By.CSS_SELECTOR, "css selector")

详细介绍
ID
//使用方式
login_form = driver.find_element(By.ID, 'loginForm')
<html>   // HTML 标签是由尖括号包围关键词   成对出现     开始标签 <body>   结束标签</body> 之间的文本是可见的页面内容
 <body>
  <form id="loginForm">
   <input name="username" type="text" />
   <input name="password" type="password" />
   <input name="continue" type="submit" value="Login" />
  </form>  
 </body>
</html>  
// <h1> </h1> 之间文本显示为标题 <P> </P>文本显示为段落 <a> 链接 <a href = "URL 网址"> This is a link </a> href 是属性

NAME
username = driver.find_element(By.NAME, 'username')
// 类别是 按键的 NAME
continue = driver.find_element(By.NAME, 'continue')

 

//XPath支持通过id或name属性定位的简单方法,并通过开辟各种新的可能性来扩展它们,如定位页面上的第三个复选框。
XPATH
login_form = driver.find_element(By.XPATH, "/html/body/form[1]")  //绝对路径
login_form = driver.find_element(By.XPATH, "//form[1]")   //HTML第一个元素
login_form = driver.find_element(By.XPATH, "//form[@id='loginForm']")
TAG_NAME
<html>
 <body>
  <h1>Welcome</h1>   //标题  尖括号的都是TAG
  <p>Site content goes here.</p> //段落

<p class="content">Site content goes here.</p>
</body>
</html>

heading1 = driver.find_element(By.TAG_NAME, 'h1') //定位标签为h1的元素

CLASS_NAME  CSS_SELECTOR

 

content = driver.find_element(By.CLASS_NAME, 'content')
content = driver.find_element(By.CSS_SELECTOR, 'p.content')

 

 

 

 

标签:webdriver,NAME,python,selenium,driver,element,新手,find
From: https://www.cnblogs.com/shaitaiyang/p/16776933.html

相关文章

  • 力扣594(java&python)-最长和谐子序列(简单)
    题目:和谐数组是指一个数组里元素的最大值和最小值之间的差别正好是1。现在,给你一个整数数组nums,请你在所有可能的子序列中找到最长的和谐子序列的长度。数组的子序......
  • python study
    pythonpycharmPythonpip安装与使用pythonpippipinstallpyqt5pipinstallpyqt5_toolsqtdesigner就在python目录下:.\Python36\Lib\site-packages\pyqt5-tools。pyqt5_to......
  • Win10 环境下 vscode 没法在终端使用 conda activate 命令来更换 Python 环境的解决方
    在vscode上激活conda镜像如报下面错误:CommandNotFoundError:Yourshellhasnotbeenproperlyconfiguredtouse'condaactivate'.Ifusing'condaactivate'fr......
  • python如何调用openpyxl库把数据写入Excel?
    代码importosfromopenpyxlimportload_workbookproject_path=os.path.abspath(os.path.join(os.getcwd(),"../../../"))#获取项目路径根据实际改变#*====......
  • 盘点一个Python列表(元素多样)处理的实战题目(使用正则表达式也可以实现)
    大家好,我是Python进阶者。一、前言前几天在Python白银交流群【凡人不烦人】问了一个Python列表处理的问题,提问截图如下:下面是他的部分数据:lst=['(问答题)(2)假设镀......
  • python基础
    编程语言介绍特点跨平台性执行效率开发效率机器语言二进制编码差三者中最高三者中最差汇编语言英文字符代替二进制差中中高级语言编译型、解......
  • Python:从入门到进阶
    导读本文将推荐一个Github开源项目:python-tutorial。本Python教程包含了一些范例,涵盖了大多数Python日常脚本任务,是入门Python的学习资料,也可以作为工作中编写Python脚本......
  • 学习python-Day70
    今天学习内容一、自定义频率类fromrest_framework.throttlingimportBaseThrottleclassMyThrottle(BaseThrottle):VISIT_RECORD={}#存放用户访问记录{ip......
  • Python爬虫四(正则表达式)
    菜鸟教程之python正则表达式:​​http://www.runoob.com/python/python-reg-expressions.html​​python官网正则文档:​​https://docs.python.org/2/library/re.html​......
  • 辨别 Python 中 load 和 loads 的小技巧
      load和loads都是实现“反序列化”,load通过json.load(open('*.json'))这样的格式,从文件句柄中打开文件,加载到Python的变量中,并以字典的格式转换。而loads必须对......