python + selenium 新手随笔 元素定位

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']")  //相对路径 加 属性
// 绝对路径 : /开头




相对路径://开头   5种方式 : 1.相对路径+索引  /html/body/form[1] 2.相对路径+属性//form[@id='loginForm']
3.相对路径+通配符定位*   //*[@id='loginForm']  4相对路径+部分属性值定位 
以什么开头://*[@*='loginForm'] 从第二个字符串到结尾//*[substring(@id,2)='log‘] 或者是包含部分字符//*[contains@id,'log]'
5.相对路径+部分文本  //span[text{} = "图片搜索"]

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')

 

 
复制代码

 

复制代码

 css 定位: 相对路径  通过ID和CLASS 

posted @   晒太阳m  阅读(165)  评论(0编辑  收藏  举报
相关博文:
阅读排行:
· 被坑几百块钱后,我竟然真的恢复了删除的微信聊天记录!
· 【自荐】一款简洁、开源的在线白板工具 Drawnix
· 没有Manus邀请码?试试免邀请码的MGX或者开源的OpenManus吧
· 园子的第一款AI主题卫衣上架——"HELLO! HOW CAN I ASSIST YOU TODAY
· 无需6万激活码!GitHub神秘组织3小时极速复刻Manus,手把手教你使用OpenManus搭建本
点击右上角即可分享
微信分享提示