一、使用不同方式进行定位-5
1、不同的方式
- 通过Id唯一属性进行定位。
driver.find_element_by_id("register_email").send_keys("jieqiong1755@163.com")
- 通过class_name组合属性进行定位
- 注意里面的elements和element的区别。elements是上一层容器的节点,并需要在后面追加标识地址,若不追加,默认是第一个为crontrols的容器。element是容器中具体的某一个元素了。并且,elements返回的是一个list,element返回的是一个元素。list才能用len()求长度。这里写[1],实际上是第二个crontrols的容器。实际的第一个不需要写标号。
- 注意里面的class="form-control input-lg",中间存在空格,复合型元素,不能全写进行定位,并且该元素共计4个。所以找form-control即可。
-
driver.find_elements_by_class_name
-
find_element_by_class_name
user_name_element_node = driver.find_elements_by_class_name("controls")[1] user_element = user_name_element_node.find_element_by_class_name("form-control") user_element.send_keys("zhangjieqiong")
- 通过name属性进行定位
driver.find_element_by_name("password").send_keys("zjq111111")
- 通过xpath进行定位
- 注意双引号中间还有引号,需要用单引号作区分
driver.find_element_by_xpath("//*[@id='captcha_code']").send_keys("11111")
2、具体
#coding=utf-8 from selenium import webdriver import time from selenium.webdriver.support import expected_conditions as EC driver = webdriver.Chrome() #driver = webdriver.Firefox() #driver = webdriver.Edge() driver.get("http://www.5itest.cn/register") time.sleep(5) print(EC.title_contains("注册")) driver.find_element_by_id("register_email").send_keys("jieqiong1755@163.com") user_name_element_node = driver.find_elements_by_class_name("controls")[1] user_element = user_name_element_node.find_element_by_class_name("form-control") user_element.send_keys("zhangjieqiong") driver.find_element_by_name("password").send_keys("zjq111111") driver.find_element_by_xpath("//*[@id='captcha_code']").send_keys("11111")
PS D:\imooc\selenium> python .\start_browser.py DevTools listening on ws://127.0.0.1:56221/devtools/browser/0f811558-b657-4b50-98ef-6135cc2b3988