一、使用不同方式进行定位-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

 

posted @ 2022-08-16 15:15  酱汁怪兽  阅读(29)  评论(0编辑  收藏  举报