selenium浏览器元素定位

一、介绍

  selenium是应用于Web应用程序最流行的开源测试自动化测试工具。Selenium支持多种系统环境(Windows,Mac,Linux)和浏览器(Chrome,Firefox,IE和Opera等浏览器)。 它的脚本可以用各种编程语言编写,如Java,Groovy,Python,C#,PHP,Ruby和Perl。

二、官方网址

http://www.seleniumhq.org/

三、启动火狐浏览器

1、下载geckodriver.exe;

2、geckodriver.exe放在python安装目录下D:\Software\Python\Python37;

3、输入python代码

from selenium import webdriver

driver = webdriver.Firefox()    #Firefox浏览器

# driver = webdriver.Chrome()    #Chrom浏览器

# driver = webdriver.Ie()    #IE浏览器

# driver = webdriver.Edge()      #Edge浏览器

# driver = webdriver.Opera()      #Opera浏览器

driver.get("https://www.baidu.com/")        #访问百度

driver.quit() #退出浏览器

4、运行代码

四、单元素定位

1、通过元素的id属性: driver.find_element_by_id("kw")

2、通过元素的name属性:driver.find_element_by_name("wd")

3、通过元素的class属性:driver.find_element_by_class_name("s_ipt")

4、右键copy xpath:driver.find_element_by_xpath('//*[@id="kw"]')

5、超链接文本即a标签对应的文本:driver.find_element_by_link_text(u"新闻")

6、模糊匹配超链接文本即a标签对应的文本:driver.find_element_by_partial_link_text(u"新")

7、右键copy css选择器:driver.find_elements_by_css_selector('#kw')

五、多元素定位

1、如果通过tag_name定位到的是多个元素,那么返回的元素是一个列表,需要具体定位到list的索引,比如百度的输入框是在第8位,那么索引就是7:driver.find_elements_by_tag_name('input')[7]

2、如果通过id='login'定位,发现id不是唯一的,也是需要具体定位到具体的索引,比如登录按钮的索引是2:driver.find_elements_by_id('login')[2]

六、iframe元素定位

1、如果通过上述方法无法定位到元素,那么有可能定位的元素属性在iframe框架中。

2、iframe对象代表一个HTML的内联框架,如果存在iframe框架,首先要进入到iframe框架,再定位到iframe框架中的元素。定位的方式分为两种,一种是以id的方式,一种是以索引的方式。

3、以id的方式:driver.switch_to_frame(‘text’),其中text为iframe元素的id属性。

4、以索引的方式:driver.switch_to_frame(0),如果iframe只有一个,那么索引就是0.

5、如果存在多层嵌套的iframe元素,那么根据需要进入到第一层frame框架中,比如第一层iframe元素的id为parent,那么先driver.switch_to_frame(‘parent’),然后进入第二层frame框架中,比如第二层iframe元素的id为son,那么就是driver.switch_to_frame(‘son’),如果需要跳出iframe框架,那么就是driver.switch_to_default_content()

你可能感兴趣的:(selenium浏览器元素定位)