selenium标签 通过标签内属性定位

selenium如何获取已定位元素的属性值?
时间: 11:38:24
&&&& 阅读:106
&&&& 评论:
&&&& 收藏:0
标签:&&&&&&&&&&&&&&&&&&&&&&&&&&&HTML源代码:
&div class="res-status" data-fortune="5" data-selfsos="" data-id="39052"&
已定位到div,有3个值,想得到data-id的值。
driver.find_element_by_xpath("//*[@id=‘lobby-left-container‘]/div[2]/div/table/tbody/tr[1]/td[2]/div")
a = driver.find_element_by_xpath("//*[@id=‘lobby-left-container‘]/div[2]/div/table/tbody/tr[1]/td[2]/div").get_attribute("data-id")print(a)
&标签:&&&&&&&&&&&&&&&&&&&&&&&&&&&原文地址:https://www.cnblogs.com/lizhe860/p/8340545.html
&&国之画&&&& &&&&chrome插件
版权所有 京ICP备号-2
迷上了代码!python+selenium页面自动化 元素定位实际遇到的各种问题(持续更新) - who_care - 博客园
1、class属性有空格& (已验证)
当classname 中存在空格的时候,直接使用find_element_by_class_name时,会显示定位失败,此时,需要将classname中的空格替换成英文的点“.”,如下图:
此时如果使用 find_element_by_class_name("link detail"),则提示无法定位该元素
如果使用英文点替换,则可以正常定位 find_element_by_class_name("link.detail")
如果class有多个值,中间用空格分开,可以只用其中一个值(如果唯一)进行定位。&比如find_element_by_class_name("link")
可参考 https://blog.csdn.net/cyjs1988/article/details/&
2、上传文件
用AutoIt上传比较麻烦,找到上传的input标签,就可以通过send_keys()实现上传:将本地文件的路径作为一个值放在input标签中,通过form表单将这个值提交给服务器。
如上图所示,定位到文件输入框,对应的是位置1 ,但是真正上传的input标签是位置2& id=upfile(上传文件的意思),脚本如下:
find_element((By.ID,'upfile')).send_keys(file_path)
3、文件下载
方法一:(不推荐使用)
1、设置火狐浏览器自动下载到默认路径,不跳出确认框。
2、找到浏览器配置文件夹路径:帮助菜单—故障排除信息——配置文件夹-打开文件夹——获取文件夹路径fp
3、driver=webdriver.Firefox(firefox_profile=fp)&&(不加firefox_profile参数打开的火狐是原生的浏览器,很干净什么插件都没有)
这时自动化脚本打开的就是实际使用的火狐,如果收藏地址、插件较多的话,打开会很慢。
方法二:(推荐)&
通过设置浏览器参数
option = webdriver.ChromeOptions()prefs = {'profile.default_content_settings.popups': 0, 'download.default_directory': export_path}
# 设置下载路径,关闭确认弹出框。option.add_experimental_option('prefs', prefs)driver = webdriver.Chrome(chrome_options=option)
以上是chrome的设置方法,firefox类似。
4、/.. 定位& 返回上级节点& 和parent 效果一样
方法1://td[@title='admin']/parent::tr
方法2://td[@title='admin']/..& & &更简单明了&&
5、following 结合 / 、// 的用法深入分析
following:&选取文档中 当前节点的结束标签之后 的所有节点,除属性节点(节点中的属性)和命名空间节点(类似这样的节点&div& &/div&??)之外,如果当前节点有子节点,则包含其所有子节点。
xxx / following:: 选取xxx结束标签之后的所有节点,不包括xxx的所有子节点。& '/' 表示从xxx后进行定位,xxx // following:: 选取xxx结束标签之后的所有节点,&包括xxx的所有子节点。'//' 表示可以从xxx&任意一级子节点进行定位,以及xxx节点后进行定位。
如上图 想定位到第一个input节点
定位1://div[@id='History_Table']/following::input[1]&&
结果:没有匹配元素,
原因:需要定位input属于当前节点div[@id='History_Table']的子节点,而/ following 不包括当前节点的子节点。
定位2://div[@id='History_Table']//following::input[1]
结果:匹配到了当前节点中3个input子节点。
原因:// following& 从当前节点后的任意一级子节点进行定位,所以3个都能匹配到。
&//div[@id='History_Table']//following::input[2]& 则匹配后2个
//div[@id='History_Table']//following::input[3]& 则匹配最后一个
定位3://div[@id='History_Table']/descendant::input[1]
&结果:成功定位到了第一个input
原因:descendant 选取当前节点的所有后代元素,/ descendant 从当前节点后进行定位,所以唯一
如果改成 //div[@id='History_Table']//descendant::input[1] 则匹配3个,因为// descendant 从当前节点中任意一级子节点进行定位。
对于following::元素节点[num]& 这种形式的定位,总结如下
1)、如果定位的元素节点不在子节点内,那么/和// 使用没有区别。
2)、如果定位的元素节点只在子节点内,那么使用following时只能使用//,但会出现定位到多个元素。 建议使用 / descendant。(//descendant 在任意一级子节点进行定位)
3)、如果定位的元素节点既在子节点内,又在节点外,如果你想定位的是子节点内的,则用 /&如果想定位的是节点外的,使用/following,不能使用//following,因为子节点内的元素节点存在,会出现定位到多个元素。
6、Xpath 的常见函数
last()& 最后一个节点数
.//*[@id='select2-drop']/ul/li[last()]& & & last()是代表最后一个li。可以运算last()-3
&count(node-set)& & 返回节点集node-set中的节点数
可以用于统计
7、页面滚动条滑动
self.driver.execute_script("window.scrollTo(0,document.body.scrollHeight);")
# 将页面滚动条滑到底部
self.driver.execute_script("arguments[0].scrollIntoView();", el)
# 向下滑动滚动条,跳转到目标元素处
self.driver.execute_script("arguments[0].scrollIntoView(false);", el)
# 向上滑动滚动条,跳转到目标元素处
arguments[0].scrollIntoView(),不能随意使用,会先把元素element对象的表格“顶端”移动到与当前窗口的“顶部”对齐,如果元素当前可见,可能移动后就不可见了,导致定位报错。因为会把元素顶端对齐窗口顶部,有时候也会出现跳转后,元素仍然不可见的情况。如果是需要点击这个元素,可以使用下面这种方式:
self.driver.execute_script("arguments[0].click();", el)
# 直接点击不可见的目标元素,不再先跳转。
8、获取某节点下子节点个数
获取div节点下li的节点个数
法一:num=self.driver.execute_script("return $('.jspPane').find('li').") # JQuery写法 , 要加上return 才能获取js执行的值!!!法二:num=self.driver.execute_script('return document.getElementsByClassName("jspContainer")[0].getElementsByTagName("li").') #DOM写法
&9、selenium 获取元素文本值
&self.drive.find_element(*loc).text& &文本值加载需要时间,获取文本值前 常常需要sleep一下 否则就可能获取为空值 或者 获取的不是最新的文本值 ,有没有更好的方法呢?
阅读(...) 评论()Python+Selenium自动化学习——定位元素 - 简书
Python+Selenium自动化学习——定位元素
查看网页页面代码可以使用以下途径:Chrome:按F12或者网页页面右键的“检查”
Firefox:网页页面右键的“审查元素”
1.通过id属性来定位元素(id属性在html文档中必须具有唯一性)
find_element_by_id()方法
文本输入框定位:find_element_by_id('kw')2.通过name属性来定位元素(name属性在当前页面中)
find_element_by_name()方法
文本输入框定位:find_element_by_name('wd')3.通过class属性来定位元素
find_element_by_class_name()方法
文本输入框定位:find_element_by_class_name('s_ipt')4.通过tag来定位元素
find_element_by_tag_name()方法
没成功!!!!略过....................5.通过link元素标签对之间的文本信息来定位元素
find_element_by_link_text()方法6.通过partial link定位元素,和link类似,只不过是部分文本信息来进行定位
find_element_by_partial_link_text()方法7.find_element_by_xpath()方法
7.1绝对路径来定位:find_element_by_xpath('/html/body/.........')
文本框:find_element_by_xpath("/html/body/div[2]/div[1]/div/div[1]/div/form/span[1]/input")
7.2通过属性定位元素
find_element_by_xpath("//标签名[@属性=‘属性值’]")
id属性:find_element_by_xpath("//input[@id = 'kw']")
name属性:find_element_by_xpath("//input[@name = 'wd']")
如果不想指定标签名,可以将标签名用 * 代替,xpath不局限于id、name、class这三个属值, 元素的任意属性都可以使用,只要它能唯一标识一个元素
7.3通过标签定位元素
当元素没有唯一标识的属性可以利用时,可以往上层级进行搜索,假如标签中有唯一标识,那 么可以利用标签名来进行定位
find_element_by_xpath("//span[@class = 'bg s_ipt_wr']/input")
7.4通过多个属性组合定位元素
当一个属性不能唯一区分一个元素,可以用逻辑运算符and来连接多个属性查找元素
find_element_by_xpath("//input[@id = 'kw' and @name = 'wd']")
8.通过CSS定位元素
8.1通过id属性定位元素
文本框:find_element_by_css_selector("#kw")
按钮:find_element_by_css_selector("#su")
8.2通过class属性定位元素
文本框:find_element_by_css_selector(".s_ipt")
按钮:find_element_by_css_selector(".bg s_btn")
8.3通过其他属性值来定位元素
文本框:find_element_by_css_selector("[name = 'wd']")
find_element_by_css_selector("[maxlength = 255]")
find_element_by_css_selector("[autocomplete = 'off']")
8.4通过层级父子关系来定位元素
文本框:find_element_by_css_selector("span & input ")
拓展:find_element_by_css_selector("span & input.s_ipt")
1.contexts contexts(self): Returns the contexts within the current session. 返回当前会话中的上下文,使用后可以识别H5页面的控件 Usage: driver.contexts 用法: driver....
Selenium提供了一下方法来定义一个页面中的元素: find_element_by_id 若查找元素过多,可以在elements后面加s,则返回的结果将是列表,如: find_elements_by_id PS:个人觉得css对于新手来说比较难,多操作几遍就可以了,而且...
1、id、name、class name、tag name、link text、partial link text、xpath、css selector在 Python 语言中对应的定位方法如下: find_element_by_id() find_element_by_n...
Selenium是自动化测试工具,主要用于Web应用程序的自动化测试,当然,也支持所有基于web的管理任务自动化。 Selenium 的特点:? 开源,免费? 多浏览器支持:FireFox、Chrome、IE、Opera? 多平台支持:linux 、windows、MAC?...
Selenium 2 自动化测试实例 更新中... 目录: [TOC] [1. 自动化测试基础][2. 测试环境搭建][3. Python基础][4. WebDriver API][5. 自动化测试模型][6. selenium IDE][7. unittest 单元测试框...
引子 你是不是没时间呀?你是不是想不买蘸水笔就能够写好英文圆体书法呢?还是说想用钢笔就可以练好这些字体呢?是不是墨水什么调起来太麻烦啦?........ 往往大家在练习前的这些问题才是阻碍你学好英文书法的拦路虎,而这篇文章都将解决这些问题,这类疑难杂症的解决便是这篇文章的特...
《梦幻西游无双》手游UI欣赏 ———————————————————————————————————————— 高清资源传送门: https://yunpan.cn/cSNkZGXFzV7pt 访问密码 8ae5
琅琊令之女中豪杰|烟雨任平生 01 黑云压境,风雨欲来,一匹马从东边的地平线射出,越来越近。只见马匹上的人紧紧地俯在马背上,双脚不时夹着马肚,一身黑衣被风鼓起,随带着还有飘起的束发。马匹嘶吼,像是要逃离暴风雨的来临。 万里归来,马匹和人儿都已憔悴,不想暴雨倾盆而下,浇透了一...
午夜的街道。 街灯,穿梭的汽车和雾气笼罩的街道。 这是11月底的一天,她又是最晚离开公司的那一个。 风很大,北方冬天的大风直接透过围脖挂到脖子里。 她觉得冷,但更觉得无聊。 于是从包里掏出一根香烟。 背过脸,点燃了,这时候。 背后有个声音喊她:“merry,真的是你啊!” ...C# Selenium中Select-option标签的定位方法总结
时间: 12:33:51
&&&& 阅读:591
&&&& 评论:
&&&& 收藏:0
标签:&&&&&&&&&&&&&&&&&&&&&&&&&&&定位页面上的select-option结构,尝试了以下几种方法,均没有生效:
//iw.FindElement(By.CssSelector("select#id & option[value=‘‘]")).Click();
//iw.FindElement(By.XPath("//select[@id=‘‘]/option[@value=‘‘]")).Click();
//iw.FindElements(By.TagName("option"))[index].Click();
最后通过以下这种方式,成功定位到了页面上的Select-option标签:
var selector = iw.FindElement(By.Id(""));
SelectElement select = new SelectElement(selector);
select.SelectByText("text");
Select对象可以通过option的value,text等属性对元素进行定位。
实际应用,如在SharePoint中创建site时,对于site template的选取和site path的选择:
public IWebDriver CreateSPSite(IWebDriver iw, string caUrl,string title,string template)
string createSitePage = caUrl + "/_admin/createsite.aspx";
iw.Navigate().GoToUrl(createSitePage);
WaitUntilPageLoadedID(iw, "ctl00_PlaceHolderMain_ctl02_RptControls_BtnCreateSite");
iw.FindElement(By.Id("ctl00_PlaceHolderMain_idTitleDescSection_ctl01_TxtCreateSiteTitle")).SendKeys(title);
var paths = iw.FindElement(By.Id("ctl00_PlaceHolderMain_ctl01_ctl04_DdlWildcardInclusion"));
SelectElement path = new SelectElement(paths);
path.SelectByText("/sites/");
WaitUntilPageLoadedID(iw, "ctl00_PlaceHolderMain_ctl01_ctl04_TxtSiteName");
iw.FindElement(By.Id("ctl00_PlaceHolderMain_ctl01_ctl04_TxtSiteName")).SendKeys(title);
switch (template)
case "ts":
case "edi":
iw.FindElement(By.Id("ctl00_PlaceHolderMain_InputFormTemplatePickerControl_ctl00_ctl01_tabid1")).Click();
Thread.Sleep(1000);
WaitUntilPageLoadedID(iw, "ctl00_PlaceHolderMain_InputFormTemplatePickerControl_ctl00_ctl01_LbWebTemplate");
var selector = iw.FindElement(By.Id("ctl00_PlaceHolderMain_InputFormTemplatePickerControl_ctl00_ctl01_LbWebTemplate"));
SelectElement select = new SelectElement(selector);
select.SelectByText("eDiscovery Center");
case "rc":
iw.FindElement(By.Id("ctl00_PlaceHolderMain_InputFormTemplatePickerControl_ctl00_ctl01_tabid1")).Click();
Thread.Sleep(1000);
WaitUntilPageLoadedID(iw, "ctl00_PlaceHolderMain_InputFormTemplatePickerControl_ctl00_ctl01_LbWebTemplate");
selector = iw.FindElement(By.Id("ctl00_PlaceHolderMain_InputFormTemplatePickerControl_ctl00_ctl01_LbWebTemplate"));
select = new SelectElement(selector);
select.SelectByText("Records Center");
case "holdCenter":
iw.FindElement(By.Id("ctl00_PlaceHolderMain_InputFormTemplatePickerControl_ctl00_ctl01_tabid1")).Click();
Thread.Sleep(1000);
WaitUntilPageLoadedID(iw, "ctl00_PlaceHolderMain_InputFormTemplatePickerControl_ctl00_ctl01_LbWebTemplate");
selector = iw.FindElement(By.Id("ctl00_PlaceHolderMain_InputFormTemplatePickerControl_ctl00_ctl01_LbWebTemplate"));
select = new SelectElement(selector);
select.SelectByText("In-Place Hold Policy Center");
iw.FindElement(By.Id("ctl00_PlaceHolderMain_idPrimaryAdministratorSection_ctl01_PickerOwner_upLevelDiv")).SendKeys(@"userName");
iw.FindElement(By.Id("ctl00_PlaceHolderMain_ctl02_RptControls_BtnCreateSite")).Click();
对应在页面上的操作,第一段灰色部分的代码对如下标签进行了选择:
第二段灰色部分代码对如下标签进行了选择:
标签:&&&&&&&&&&&&&&&&&&&&&&&&&&&原文:http://www.cnblogs.com/LanTianYou/p/5009617.html
教程昨日排行
&&国之画&&&& &&&&&&
&& &&&&&&&&&&&&&&
鲁ICP备号-4
打开技术之扣,分享程序人生!09:10 提问
selenium自动化 元素定位导航下拉窗口怎么定位元素
按赞数排序
有尝试select吗
准确详细的回答,更有利于被提问者采纳,从而获得C币。复制、灌水、广告等回答会被删除,是时候展现真正的技术了!
其他相关推荐

我要回帖

更多关于 selenium面试题测试 的文章

 

随机推荐