判断获取元素

Yishto 2021-08-20 21:46:51
Categories: Tags:
1
2
3
4
5
6
7
#!/usr/bin/python 
# -- coding: UTF-8 --
from selenium import webdriver 
import time 
driver = webdriver.Firefox()
driver.get(‘http://www.baidu.com‘)

#登录 

1
2
yes=driver.find_element_by_name(“tj_login”).is_displayed() 

#判断元素是否是存在的,返回true,说明是存在的,false表示不存在 

1
2
print yes 

返回false的原因有很多可能,可能是定位不准确换个方式,或者这个于是元素需要hover或者悬停才会显示出来,或者是display隐藏属性为none

1
2
3
driver.find_element_by_css_selector(“#u1 > a[name=\”tj_login\”]”).click() 
time.sleep(10

#等待10分钟 

#输入用户名和密码 

1
2
3
4
driver.find_element_by_id(‘TANGRAM__PSP_8__userName’).send_keys(‘1285154416@qq.com’) 
driver.find_element_by_id(‘TANGRAM__PSP_8__password’).send_keys(‘123456’)
driver.quit()

方式二:

前言

最近有很多小伙伴在问如何判断一个元素是否存在,这个方法在selenium里面是没有的,需要自己写咯。

元素不存在的话,操作元素会报错,或者元素有多个,不唯一的时候也会报错。本篇介绍两种判断元素存在的方法。

一、find_elements方法判断

1.find_elements方法是查找页面上所有相同属性的方法,这个方法其实非常好用,能熟练掌握技巧的不多,小编这次就发挥它的功效

2.由于元素定位的方法很多,所以判断的时候定位方法不统一也比较麻烦,这里我选择css定位(有喜欢xpath的同学可以自己用xpath语法)

3.写一个函数判断,找到就返回Ture,没找到就返回False(或者不止一个)

二、百度输入框为例

1.判断id为kw的元素是否存在

2.判断标签为input元素是否存在

3.判断id为xxx元素是否存在

三、捕获异常方法

1.如果没找到元素会抛异常,返回False

2.如果找到元素就返回Ture

3.但是这个方法有个弊端,如果页面上存在多个一样元素,也会返回Ture的(也就是说只要页面上有元素就返回Ture,不管几个)

四、参考代码

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
# coding:utf-8
from selenium import webdriver

driver = webdriver.Firefox()
driver.implicitly_wait(10)
driver.get("http://www.baidu.com")
def is_element_exist(css):
    s = driver.find_elements_by_css_selector(css_selector=css)
    if len(s) == 0:
        print "元素未找到:%s"%css
        return False
    elif len(s) == 1:
        return True
    else:
        print "找到%s个元素:%s"%(len(s),css)
        return False

# 判断页面上有无id为kw的元素
if is_element_exist("#kw"):
    driver.find_element_by_id("kw").send_keys("yoyoketang")
# 判断页面有无标签为input元素
if is_element_exist("input"):
    driver.find_element_by_tag_name("input").send_keys("yoyoketang")
# 判断页面有无id为xxx的元素
if is_element_exist("xxx"):
    driver.find_element_by_id("xxx").send_keys("yoyoketang")

def isElementExist(css):
    try:
        driver.find_element_by_css_selector(css)
        return True
    except:
        return False

print isElementExist("#xxx")