ui自动化测试——selenium的基本使用及定位方法

-基本使用-

1、打开窗口

(1)dx,.get  打开网站

# from selenium import webdriver #导入selenium模块中的webdriver
# import time
# dx=webdriver.Chrome() #创建一个驱动谷歌浏览器的对象
# dx.get("http://49.233.201.254:8080/cms/manage/login.do") #通过get打开页面

(2)重开窗口打开页面

# from selenium import webdriver #导入selenium模块中的webdriver
# import time
# dx=webdriver.Chrome() #创建一个驱动谷歌浏览器的对象
# dx.get("http://49.233.201.254:8080/cms/manage/login.do") #通过get打开页面
# time.sleep(2)
# dx.get("https://www.baidu.com")       #打开网页页面
# time.sleep(2)
# w="window.open('https://www.baidu.com')"
# dx.execute_script(w)        #重开窗口打开页面

2、时间等待

 time.sleep(2)       #强制等待
# dx.implicitly_wait(10)        #隐式等待,最长等待10秒,上一页页面运行完后跳转
# # WebDriverWait          #显示等待

3、页面刷新

# from selenium import webdriver #导入selenium模块中的webdriver
# import time
# dx=webdriver.Chrome() #创建一个驱动谷歌浏览器的对象
# dx.get("http://49.233.201.254:8080/cms/manage/login.do") #通过get打开页面
# time.sleep(2)
# dx.refresh()         #页面刷新

4、返回上一页,切换到下一页

# from selenium import webdriver #导入selenium模块中的webdriver
# import time
# dx=webdriver.Chrome() #创建一个驱动谷歌浏览器的对象
# dx.get("http://49.233.201.254:8080/cms/manage/login.do") #通过get打开页面
# time.sleep(2)
# dx.get("https://www.baidu.com")
# time.sleep(2)
# dx.back()              #切换到上一页
# time.sleep(2)
# dx.forward()          #切换到下一页

5、设置窗口

(1)窗口最大化

# from selenium import webdriver #导入selenium模块中的webdriver
# import time
# dx=webdriver.Chrome() #创建一个驱动谷歌浏览器的对象
# dx.get("http://49.233.201.254:8080/cms/manage/login.do") #通过get打开页面
# dx.maximize_window()             #窗口最大化
# time.sleep(2)
# dx.set_window_size(1920,1080)     #设置窗口大小

(2)设置窗口大小

6、截图

# from selenium import webdriver #导入selenium模块中的webdriver
# import time
# dx=webdriver.Chrome() #创建一个驱动谷歌浏览器的对象
# dx.get("http://49.233.201.254:8080/cms/manage/login.do") #通过get打开页面
# dx.get_screenshot_as_file(r"E:\1\aaa.png")           #截图

7、quit 退出所有窗口  ,close关闭当前窗口

(1)close

# from selenium import webdriver #导入selenium模块中的webdriver
# import time
# dx=webdriver.Chrome() #创建一个驱动谷歌浏览器的对象
# dx.get("http://49.233.201.254:8080/cms/manage/login.do") #通过get打开页面
# time.sleep(2)
# w="window.open('https://www.baidu.com')"
# dx.execute_script(w)
# time.sleep(2)
# # dx.close()                 #关闭当前页面
# dx.quit()                    #关闭所有页面

(2)关闭所有页面



一、selenium中的定位9种方法

1、name定位

from selenium import webdriver        #导入selenium模块中的webdriver
import time
dx=webdriver.Chrome()              #创建一个驱动谷歌浏览器的对象
dx.get("https://www.baidu.com")         #通过get打开页面
dx.find_element_by_name("wd").send_keys("name定位")

 2、id定位

from selenium import webdriver        #导入selenium模块中的webdriver
import time
dx=webdriver.Chrome()              #创建一个驱动谷歌浏览器的对象
dx.get("https://www.baidu.com")         #通过get打开页面
dx.find_element_by_id("kw").send_keys("id定位")

3、class定位

from selenium import webdriver        #导入selenium模块中的webdriver
import time
dx=webdriver.Chrome()              #创建一个驱动谷歌浏览器的对象
dx.get("https://www.baidu.com")         #通过get打开页面
dx.find_element_by_class_name("s_ipt").send_keys("class定位")

4、link定位

from selenium import webdriver        #导入selenium模块中的webdriver
import time
dx=webdriver.Chrome()              #创建一个驱动谷歌浏览器的对象
dx.get("https://www.baidu.com")         #通过get打开页面
dx.find_element_by_link_text("hao123").click()

5、partial_link_text() 模糊文本值

from selenium import webdriver        #导入selenium模块中的webdriver
import time
dx=webdriver.Chrome()              #创建一个驱动谷歌浏览器的对象
dx.get("https://www.baidu.com")         #通过get打开页面
dx.find_element_by_partial_link_text("hao").click()

6、xpath定位

from selenium import webdriver        #导入selenium模块中的webdriver
import time
dx=webdriver.Chrome()              #创建一个驱动谷歌浏览器的对象
dx.get("https://www.baidu.com")         #通过get打开页面
dx.find_element_by_xpath('//*[@id="kw"]').send_keys("xpath定位")

7、css定位

from selenium import webdriver        #导入selenium模块中的webdriver
import time
dx=webdriver.Chrome()              #创建一个驱动谷歌浏览器的对象
dx.get("https://www.baidu.com")         #通过get打开页面
dx.find_element_by_css_selector("#kw").send_keys("css定位")

8、tag_name 方法:就是元素属性

from selenium import webdriver        #导入selenium模块中的webdriver
import time
dx=webdriver.Chrome()              #创建一个驱动谷歌浏览器的对象
dx.get("https://www.baidu.com")         #通过get打开页面
inputs=dx.find_elements_by_tag_name("input") #找到标签input
for i in inputs:
    if i.get_attribute("name")=="wd":
        i.send_keys("tag_name定位方法")

9、js定位

from selenium import webdriver        #导入selenium模块中的webdriver
import time
dx=webdriver.Chrome()              #创建一个驱动谷歌浏览器的对象
dx.get("https://www.baidu.com")         #通过get打开页面
js='document.getElementById("kw").value="js定位"'
dx.execute_script(js)

二、xpath 定位

格式:dx.find_element_by_xpath(xpath表达式)

两个定位:

1、绝对定位:

特点:

1.以单斜杠/开头;

2.从页面根元素(HTML标签)开始,严格按照元素在HTML页面中的位置和顺序向下查找

右键copy  full  path复制

如:/html/body/div[2]/div[1]/div[5]/div/div/form/span[1]/input

2、相对定位:(我们一般都是用相对定位来定位的)

特点:

1.以双斜杠//开头;

2.不考虑元素在页面当中的绝对路径和位置;

3.只考虑是否存在符合表达式的元素即可。

2.1使用标签名+节点属性定位

//*[@id="kw"]

语法://标签名[@属性名=属性值]

案例:

from selenium import webdriver        #导入selenium模块中的webdriver
import time
dx=webdriver.Chrome()              #创建一个驱动谷歌浏览器的对象
dx.get("https://www.baidu.com")         #通过get打开页面
time.sleep(2)
dx.find_element_by_xpath('//*[@id="kw"]').send_keys("xpath中的id定位")
dx.find_element_by_xpath('//*[@name="wd"]').send_keys("xpath中的name定位")
dx.find_element_by_xpath('//*[@class="s_ipt"]').send_keys("xpath中的class定位")
dx.find_element_by_xpath('//*[@autocomplete="off"]').send_keys("xpath中的其他属性定位")
dx.find_element_by_xpath('//*[@autocomplete="off" and @name="wd"]').send_keys("xpath中的组合属性定位")
dx.find_element_by_xpath('//input[@name="wd"]').send_keys("xpath中的标签定位")
dx.find_element_by_xpath('//*[@id="form"]/span[1]/input[1]').send_keys("path中层级定位")

三、css定位

from selenium import webdriver        #导入selenium模块中的webdriver
import time
dx=webdriver.Chrome()              #创建一个驱动谷歌浏览器的对象
dx.get("https://www.baidu.com")         #通过get打开页面
time.sleep(2)
dx.find_element_by_css_selector("#kw").send_keys("css中id简写方法")
dx.find_element_by_css_selector("[id='kw']").send_keys("css中id全称方法")
dx.find_element_by_css_selector("[name='wd']").send_keys("css中name全称方法")
dx.find_element_by_css_selector("[class='s_ipt']").send_keys("css中class全称方法")
dx.find_element_by_css_selector(".s_ipt").send_keys("css中class简写方法")
dx.find_element_by_css_selector("[autocomplete='off']").send_keys("css中其他属性方法")
dx.find_element_by_css_selector("[autocomplete='off'][class='s_ipt']").send_keys("css中组合属性方法")
dx.find_element_by_css_selector("#form > span.bg.s_ipt_wr.new-pmd.quickdelete-wrap>input").send_keys("css中层级父级方法")
dx.find_element_by_css_selector("#form>span>input").send_keys("css中层级爷爷级方法")

 

posted @ 2025-03-19 18:52  uai  阅读(74)  评论(0)    收藏  举报