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}
10-2字符型变量在路径中
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来说没法操作,可以点击一个没有连接的静态图片或者文字,也是一样的效果