selenium 元素定位

1.contains(a, b)

xpath中提供了三个非常好的方法来为我们定位部分属性值

1、contains(a, b) 如果a中含有字符串b,则返回true,否则返回false

2、starts-with(a, b) 如果a是以字符串b开头,返回true,否则返回false

3、ends-with(a, b) 如果a是以字符串b结尾,返回true,否则返回false

2.last()

不过可以发现一个规律,虽然这个div是变动的,但它始终位于最后一个节点巧妙的引入,last()函数

/html/body/div[6]/div[1]/div[1]/ul/li

/html/body/div[7]/div[1]/div[1]/ul/li

/html/body/div[8]/div[1]/div[1]/ul/li

整个xpath的写法变为:/html/body/div[last()]/div[1]/div[1]/ul/li

3.WebDriverWait.until

WebDriverWait(driver,20).until(EC.visibility_of_any_elements_located((By.XPATH,"//div[@id='resultList']/div/div[2]/button")))

4.通过父级元素定位

描述:多个attr-id=851002的元素,但是父级id='prod_4'是唯一的,可用下面的方法省略中间过程

eleNum=driver.find_element_by_xpath("//*[@id='prod_4']/*//div[contains(@attr-id, 851002)]/input")

5.获取当前时间

currenttime=get_driver().execute_script('var myDate = new Date(); var timeStr = myDate.getFullYear()+""+myDate.getMonth()+""+myDate.getDate()+""+myDate.getHours()+""+myDate.getMinutes()+""+myDate.getSeconds(); return timeStr;');

6.通过弟弟找到哥哥

//*[@data-assist="edOrder"]//*[@id='rowclick']/div/a[contains(text(),'昆明')]/../label/input

7.for循环语句

ele1=driver.find_elements_by_xpath("//*[@id='catalogTab']/div/div/a/i")

for i in ele1:

    i.click()

    sleep(4)

8.获取标签属性值并赋予出参

flag=driver.find_element_by_xpath("//*[@id='accNumDiv']/div/div/input").get_attribute('value')

put_out_data('ZNZW',flag)

9.click点击无效时可换成js方式(新装商企智能组网)

ele = driver.find_element_by_xpath("//div[@id='prod_1']//div[@id='toolsNew']")

driver.execute_script("arguments[0].click();",ele)

10.变量的使用

10-1数字型变量在xpath路径中

nb=${nb}

driver.find_element_by_xpath("(//ul[@class='table_td']//span[contains(text(),'在用')])["+nb+"]/../..//input")

10-2字符型变量在路径中

driver.find_element_by_xpath("//div[@data-widget='chooseServiceOffer']//a[text()='"${typename}"']").click()

10-3字符型变量在contains路径中

sj=${acc1}

driver.find_element_by_xpath("//*[@id='prodNum']").send_keys(sj)

ele1=driver.find_element_by_xpath("//div[@id='searchProdInfoResult']//span[contains(text(),'"+sj+"')]/..//input")

11.如何退出iframe去定位iframe外的元素

driver.switch_to.default_content()

12.判断元素列表的个数

elements=driver.find_elements_by_xpath("//*[@id='doIt']/a")

number=str(len(elements))

13.去掉字符串的空格

b2=str.strip(flag.text)

normalize-space()的功能是去掉前后的空格

//div[normalize-space(@class)='']/text()

14.截取文字

flag=driver.find_element_by_xpath("//*[@id='chargeItem']/div[contains(@id,'有线宽带')]").get_attribute('id')

kdacc=flag[5:17]

15.判断是否被选中

if Element(loc="//*[@id='c_custOrderNbr']",l_type="XPATH").is_selected():

        logging.info("流水号已被勾选")

else: 

    driver.find_element_by_xpath("//*[@id='c_custOrderNbr']").click()

16.判断是否出现某个元素

 if Element(loc="//*[@id='channelDiv']/a",l_type="XPATH").is_display():

        logging.info("渠道选择出现")

    else:

       logging.info("未出现渠道选择")

17.selenium实现点击空白区域方法

空白区域对应selenium来说没法操作,可以点击一个没有连接的静态图片或者文字,也是一样的效果

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值