100%的定位方式

来源:互联网 发布:华科软件学院 编辑:程序博客网 时间:2024/06/05 09:33

Xpath的定位方式:可以解决99%的定位


1、绝对位置定位,常用的/././

html/body/div/form/input


2、相对位置定位,常用的//..//
//input
//input[4]

//input[@id='kw1']


3、模糊匹配,常用的start-with,contains
//input[start-with(@id,'nice')]
//input[ends-with(@id,'很漂亮')]

//input[contains(@id,'那么美')]


4、选择多个属性
//cd[@country='UK'][@name='hyddd'],//cd[@country='UK' and @name='hyddd']
            //div[span="机构全称:"]//input[@id="USER_FNAME"]
    选择最后一个元素
/catalog/cd[last()]
    选择倒数第N个元素
/catalog/cd[last()-N]
     选择位置小于N的某个元素

/catalog/cd[position()<N]


5、匹配指定文本的元素
element[contains(text(),"text")]

6、name()函数返回元素的名称   //[name()='BBB']
//*[starts-with(name(),'B')]      以B开头的元素
//*[contains(name(),'C')]      包含C的元素


//div[starts-with(@id,'res')]
//div[contains(.,'2000')]
//span[contains(text(),'2000')] 


7、//BBB[normalize-space(@name)='bbb']           过滤前 后 空格
选择含有属性name且其值(在用normalize-space函数去掉前后空格后)为'bbb'的BBB元素 


8、string-length函数返回字符串的字符数,你应该用&lt;替代<, 用&gt;代替>

  //*[string-length(name()) = 3] 


9、轴类定位,用的比较少
上级 ancestor::div
下级 descendant::input
同级向下 following-sibling::div[@class="messager-text"]
同级向上 preceding-sibling
父节点 parent::*


Js的定位方式:  1%的定位补充

1.attr(name)//获取属性的值


1.1使用attr(name)获取title值:
<script>
alert($("ul li:eq(1)").attr("title"));
</script>
1.2使用attr(name)获取alt值:
<script>
alert($("ul li:eq(1)").attr("alt"));
</script>
2. attr(name,value)   //设置属性的值 


2.1使用attr(name,value)修改title值为:不吃橘子
<script>
$("ul li:eq(1)").attr("title","不吃橘子");
alert($("ul li:eq(1)").attr("title"));
</script>
3. attr(name,fn)  //设置属性的函数值


3.1把alt属性的值设置为title属性的值。
<script>
$("ul li:eq(1)").attr("title",function(){ return this.alt});
alert($("ul li:eq(1)").attr("title"));
</script>
4.attr(properties)  //将一个“名/值”形式的对象设置为所有匹配元素的属性


4.1获取<ul>里第2个<li>设置title和alt属性。
<script>
$("ul li:eq(1)").attr({title:"不喝橘子汁",alt:"不是123"});
alert($("ul li:eq(1)").attr("title"));
alert($("ul li:eq(1)").attr("alt"));
</script>
4.2获取<ul>里第2个<li>设置class。
<script>
$("ul li:eq(1)").attr({className:"lili"});
</script>
4.3获取<ul>里第2个<li>设置id。
<script>
$("ul li:eq(1)").attr({id:"lili"});
</script>
4.4获取<ul>里第2个<li>设置style。
<script>
$("ul li:eq(1)").attr({style:"color:red"});
</script>


那么怎么删除属性呢?
jquery中删除属性的关键词是: removeAttr 注意A是大写的. 看看怎么用的:
同样是用法一中的html代码, 我想删掉li的title属性, 那么就这样:
<script>
$("ul li:eq(1)").removeAttr ("title");
</script>
5、find获取属性为某值的元素
  1.例如<div class="demo">  …… <a data-id="1099">hello</a> …… <a data-id="1000">hello</a> </div>获取data-id="1099"的a标签:
    $(".demo").find("[data-id='1099']")


6、Js的文本显示方式
$("#MOBILE_TEL").text()
$("#MOBILE_TEL").prev().text()            # 前一个
$("#MOBILE_TEL").next().text()        # 后一个

将两个字符串连接起来  $("#ORG_ID_CODE").prev().text()+ $("#ORG_ID_CODE").text()


补充:

<input id="kw" class="s_ipt" type="text" maxlength="100" name="wd" autocomplete="off">
---------------------------------------------------------------------------------------
from selenium import webdriver
browser = webdriver.Firefox()
browser.get("http://www.baidu.com")
--------------------------------selenium 的定位方式-------------------------------------------------------
#通过id 方式定位
browser.find_element_by_id("kw").send_keys("selenium")
#通过name 方式定位
browser.find_element_by_name("wd").send_keys("selenium")
#通过tag name 方式定位
browser.find_element_by_tag_name("input").send_keys("selenium")
#通过class name 方式定位
browser.find_element_by_class_name("s_ipt").send_keys("selenium")
#通过CSS 方式定位
browser.find_element_by_css_selector("#kw").send_keys("selenium")
#通过xphan 方式定位
browser.find_element_by_xpath("//input[@id='kw']").send_keys("selenium")
----------------------------------JS的定位方式-----------------------------------------------------
$("#USER_FNAME").password("setValue","${Value}")
$("input#USER_NAME")..password().password("setValue","${Value}")
清除内容     $("input#USER_FNAME").textinput("clear")
下拉列表值   $("#ID_TYPE").combobox("setValue","${Value}")
日期控件       $("#Birthday").datebox("setValue","${Value}")
确认框控件   $("#USER_FNAME").password("setValue","${Value}")
文本框输入内容    $("input#USER_FNAME").textinput("setValue","${Value}")
-----------------------------------原生态和JQ的写法对比----------------------------------------------------
<input id="USER_CODE" class="large" placeholder="用户名" maxlength="15">
document 是原生态的写法,代码量大
${this} JQ的写法,代码量小
document.getElementById("TRD_PWD").value=("123321")id
document.getElementsByTagName("input")[0].value=9770标签
document.getElementsByClassName("large")[0] class
$("#USER_CODE") ID
$(".large") Class
$("input:first")     |    $("input") 标签
$('[placeholder="用户名"]') Name
获取文本内容:$("b")[1].textContent;             注意区分大小写
---------------------------------------------------------------------------------------


1 0
原创粉丝点击