0


selenium常用语句和定位

Selenium是一个应用于web应用程序的测试工具,支持多平台,多浏览器,多语言

去实现ui自动化测试

环境搭建好后需要学习 selenium 的 webdriver 框架,它不像 QTP 之类的有 GUI 界面的可视化工具,是webdriver 框架的 API。

dx=webdriver.Chrome() #创建一个webdriver对象,实现对浏览器的操作。这里用的谷歌浏览器

dx=webdriver.Ie()

dx=webdriver.firefox() #.后边最好用联想,不要自己输入。小括号是为了把它声明为一个匿名对象,当前的driver就是一个浏览器驱动对象,可用来对对应浏览器实现操作的动作

#UI自动化所有的调用都必须在最前面加上一个driver对象

#通过对象来打开浏览器且输入网址

#通过对象调用get方法来打开一个网站URL

一、打开浏览器get

开一个

from  selenium  import  webdriver  #导入selenium这个模块中webdriver
import  time
dx=webdriver.Chrome() #创建一个webdriver对象
dx.get("https://www.baidu.com/") #通过对象调用get打开百度

开两个

覆盖、重开窗口

from  selenium  import  webdriver  #导入selenium这个模块中webdriver
import  time
dx=webdriver.Chrome() #创建一个webdriver对象,实现对浏览器的操作。这里用的谷歌浏览器
dx.get("https://www.baidu.com/") #通过对象调用get打开百度
# dx.get("https://www.jingdong.com/") #覆盖
w="window.open('https://www.jd.com/')" #重开窗口
dx.execute_script(w) #重开窗口需要这个

二、时间等待(页面需要加载,最好等加载完再进行下一步操作)

强制等待sleep,找不找得到元素都要等待

from  selenium  import  webdriver  #导入selenium这个模块中webdriver
import  time
dx=webdriver.Chrome() #创建一个webdriver对象
dx.get("https://www.baidu.com/") #通过对象调用get打开百度
# dx.get("https://www.jingdong.com/") #覆盖
time.sleep(2) #休眠2s
w="window.open('https://www.jd.com/')" #重开窗口
dx.execute_script(w)

selenium execute_script常用方法汇总_driver.executescript-CSDN博客

隐藏等待,在规定时间内找到了下一步,更智能一点,节约时间

from  selenium  import  webdriver  #导入selenium这个模块中webdriver
import  time
dx=webdriver.Chrome() #创建一个webdriver对象
dx.get("https://www.baidu.com/") #通过对象调用get打开百度
dx.implicitly_wait(10)
w="window.open('https://www.jd.com/')" #重开窗口
dx.execute_script(w)

显行等待,等待元素出现后再进行下一步操作WebDriverwait

三、刷新refresh(页面操作后同步数据)

from  selenium  import  webdriver  #导入selenium这个模块中webdriver
import  time
dx=webdriver.Chrome() #创建一个webdriver对象
dx.get("https://www.baidu.com/") #通过对象调用get打开百度
time.sleep(2) #休眠2s
dx.refresh() #刷新
dx.execute_script(w)

四、页面切换 返回上一步back

from  selenium  import  webdriver  #导入selenium这个模块中webdriver
import  time
dx=webdriver.Chrome() #创建一个webdriver对象
dx.get("https://www.baidu.com/") #通过对象调用get打开百度
time.sleep(2) #休眠2s
dx.get("https://www.jingdong.com/") #覆盖
time.sleep(2) #休眠2s
dx.back() #返回上一页

五、切换到下一步forward

from  selenium  import  webdriver  #导入selenium这个模块中webdriver
import  time
dx=webdriver.Chrome() #创建一个webdriver对象
dx.get("https://www.baidu.com/") #通过对象调用get打开百度
time.sleep(2) #休眠2s
dx.get("https://www.jingdong.com/") #覆盖
time.sleep(2) #休眠2s
dx.back() #返回上一页
dx.forward()#切换到下一页

六、设置页面大小set_window_size

from  selenium  import  webdriver  #导入selenium这个模块中webdriver
import  time
dx=webdriver.Chrome() #创建一个webdriver对象
dx.get("https://www.baidu.com/") #通过对象调用get打开百度
time.sleep(2) #休眠2s
dx.set_window_size(540,960) #手机分辨率

七、窗口最大化 maximize_window()

from  selenium  import  webdriver  #导入selenium这个模块中webdriver
import  time
dx=webdriver.Chrome() #创建一个webdriver对象
dx.get("https://www.baidu.com/") #通过对象调用get打开百度
time.sleep(2) #休眠2s
dx.maximize_window()#窗口最大化

八、抓取截图存到本地get_screenshot_as_file

from  selenium  import  webdriver  #导入selenium这个模块中webdriver
import  time
dx=webdriver.Chrome() #创建一个webdriver对象
dx.get("https://www.baidu.com/") #通过对象调用get打开百度
time.sleep(2) #休眠2s
dx.get_screenshot_as_file(r"E:\新建文件夹\bb.png") 

九、关闭 当前窗口close

from  selenium  import  webdriver  #导入selenium这个模块中webdriver
import  time
dx=webdriver.Chrome() #创建一个webdriver对象
dx.get("https://www.baidu.com/") #通过对象调用get打开百度
time.sleep(2) #休眠2s
dx.close()#关闭当前窗口

十、关闭所有窗口,结束进程 quit (可以回收C盘的临时文件)

from  selenium  import  webdriver  #导入selenium这个模块中webdriver
import  time
dx=webdriver.Chrome() #创建一个webdriver对象
dx.get("https://www.baidu.com/") #通过对象调用get打开百度
time.sleep(2) #休眠2s
dx.get("https://www.jingdong.com/") #覆盖
time.sleep(2) #休眠2s
dx.quit()

十一、打印当前抬头,标题 print(dx.title)

from  selenium  import  webdriver  #导入selenium这个模块中webdriver
import  time
dx=webdriver.Chrome() #创建一个webdriver对象
dx.get("https://www.baidu.com/") #通过对象调用get打开百度
print(dx.title) #查看标题
w="window.open('https://www.jd.com/')" #重开窗口
dx.execute_script(w)
print(dx.title) #查看标题
time.sleep(2) #休眠2s
dx.get_screenshot_as_file(r"E:\新建文件夹\bb.png")

定位元素 id name class xpath partial_link_text tag_name css

一、查看元素属性

通过F12开发者工具

通过箭头点击,右边是输入框属性

1、根据基属性进行定位 id

from selenium import webdriver
from time import *
dx=webdriver.Chrome()
dx.get("https://www.baidu.com/")
sleep(1)
dx.maximize_window()
dx.find_element_by_id("kw").send_keys()

2、name定位

from   selenium  import  webdriver
from  time import *
dx=webdriver.Chrome()
dx.get("https://www.baidu.com/")
sleep(2)
dx.maximize_window()
dx.find_element_by_name("wd").send_keys("name定位")

3、class定位

from   selenium  import  webdriver
from  time import *
dx=webdriver.Chrome()
dx.get("https://www.baidu.com/")
sleep(2)
dx.maximize_window()
dx.find_element_by_class_name("s_ipt").send_keys("class定位")

4、链接定位

from   selenium  import  webdriver
from  time import *
dx=webdriver.Chrome()
dx.get("https://www.baidu.com/")
sleep(2)
dx.maximize_window()
dx.find_element_by_link_text("hao123").click()

5、模糊匹配

from   selenium  import  webdriver
from  time import *
dx=webdriver.Chrome()
dx.get("https://www.baidu.com/")
sleep(2)
dx.maximize_window()
dx.find_element_by_partial_link_text("hao").click()

6、xpath定位 在开发者界面右击copy xpath

from   selenium  import  webdriver
from  time import *
dx=webdriver.Chrome()
dx.get("https://www.baidu.com/")
sleep(2)
dx.maximize_window()
dx.find_element_by_xpath('//*[@id="cke_8781"]').send_keys("xpath定位")#

7、css定位 copy selector

from   selenium  import  webdriver
from  time import *
dx=webdriver.Chrome()
dx.get("https://www.baidu.com/")
sleep(2)
dx.maximize_window()
dx.find_element_by_css_selector('//*[@id="cke_8781"]').send_keys("css定位")#

8、js定位方法

from   selenium  import  webdriver
from  time import *
dx=webdriver.Chrome()
dx.get("https://www.baidu.com/")
sleep(2)
dx.maximize_window()
js="document.getElementById('kw').value='js定位'"
dx.execute_script(js)

9、tag name标签名称(单独用很难一次性定位,加入for循环组合使用)

from   selenium  import  webdriver
from  time import *
dx=webdriver.Chrome()
dx.get("https://www.baidu.com/")
sleep(2)
dx.maximize_window()
inputs=dx.find_elements_by_tag_name("input") #定位到所有input标签
for i in inputs:
    if i.get_attribute("name")=="wd": #当i这个input标签中有个id属性值为kw就表示已经定位到
        i.send_keys("tag_name定位")

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

两个定位:
1、绝对定位:
特点:1.以单斜杠/开头;2.从页面根元素(HTML标签)开始,严格按照元素在HTML页面中的位置和顺序向下查找
如:/html/body/div[2]/div[1]/div[5]/div/div/form/span[1]/input
2、相对定位:(我们一般都是用相对定位来定位的)
特点:1.以双斜杠//开头;2.不考虑元素在页面当中的绝对路径和位置;3.只考虑是否存在符合表达式的元素即可。
2.1使用标签名+节点属性定位
语法://标签名[@属性名=属性值]

一、xpath相对路径 符号//

网址:https://www.baidu.com/

//*[@id="kw"]

绝对路径:/html/body/div[1]/div[1]/div[5]/div/div/form/span[1]/input

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

1.xpath中ID定位

from   selenium  import  webdriver
from  time import *
dx=webdriver.Chrome()
dx.get("https://www.baidu.com/")
dx.find_element_by_xpath('//*[@id="kw"]').send_keys("xpath中的id定位")

2.xpath中的class定位

from   selenium  import  webdriver
from  time import *
dx=webdriver.Chrome()
dx.get("https://www.baidu.com/")
dx.find_element_by_xpath('//*[@class="s_ipt"]').send_keys("xpath中class定位")

3.xpath中的name定位

from   selenium  import  webdriver
from  time import *
dx=webdriver.Chrome()
dx.get("https://www.baidu.com/")
dx.find_element_by_xpath('//*[@name="wd"]').send_keys("xpath中name定位")

4.xpath中的标签名定位

5.xpath中其他元素定位

6.xpath中的组合属性定位

7.xpath中的层级定位

上一层//*[@id="form"]/span[1]

下一层//*[@id="form"]/span[1]/input[1]

层级(上一级) xpth=//*[@id="form"]

层级(上两级) xpth=//*[@id="form"]/span[1]/input[1]

from   selenium  import  webdriver
from  time import *
dx=webdriver.Chrome()
dx.get("https://www.baidu.com/")
#dx.find_element_by_xpath('//*[@id="form"]/span[1]/input[1]').send_keys("层级定位")
# dx.find_element_by_xpath('//*[@autocomplete="off" and @id="kw" ]').send_keys('xpath中的组合属性定位')
# dx.find_element_by_xpath("//*[@autocomplete='off']").send_keys('xpath中其他属性定位')
# dx.find_element_by_xpath('//input[@id="kw"]').send_keys("xpath中的标签定位")
# dx.find_element_by_xpath('//*[@class="s_ipt"]').send_keys("xpath中class定位")

二、css

from   selenium  import  webdriver
from  time import *
dx=webdriver.Chrome()
dx.get("https://www.baidu.com/")
from   selenium  import  webdriver
from  time import *
dx=webdriver.Chrome()
dx.get("https://www.baidu.com/")
dx.find_element_by_css_selector("[autocomplete='off']").send_keys("css中其他属性定位.")
# 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("[id='kw']").send_keys("css中id的全称定位#")
# dx.find_element_by_css_selector("#kw").send_keys("css中id简写定位#")
#dx.find_element_by_css_selector("[autocomplete='off'][name='wd']").send_keys("css中组合属性定位.")

层级定位:

上一级:#form > span.bg.s_ipt_wr.new-pmd.quickdelete-wrap

上两级:#form

a、上一级定位

from   selenium  import  webdriver
from  time import *
dx=webdriver.Chrome()
dx.get("https://www.baidu.com/")
dx.find_element_by_css_selector("#form > span.bg.s_ipt_wr.new-pmd.quickdelete-wrap>input").send_keys("css中上一级定位"

b、上两级

#form > 下一级> 下两级

定位方法中,优先顺序

1)有id优先使用id定位

2)没有id,考虑使用name或者class定位。

3)如果没有id,name,class再考虑用xpath,css定位。

4)如果是链接可以考虑使用link_text,partial_link_text 定位。

5)tag_name和JavaScript还是用的比较少的


本文转载自: https://blog.csdn.net/AgostoDu/article/details/142359013
版权归原作者 AgostoDu 所有, 如有侵权,请联系我们删除。

“selenium常用语句和定位”的评论:

还没有评论