selenium4元素定位

1、根据元素属性ID定位到元素

from selenium impot webdriver

from selenium.webdriver.comom.by import By

#创建webdriver对象

wd=webdriver.Chrom()

#调用webdriver对象的get方法 可以让浏览器打开指定的网址

wd.get('http://www.baidu.com)

#对页面元素进行操作  

wd.find_element(By.ID,'kw').send_keys('selenium')

#分解 1、element=wd.find_element(By.ID,'kw'),根据id选择元素,返回的就是该元素对应的webelement对象

#2、element.send_keys('selenium'))  ,通过webelement对象,就可以对页面元素进行操作,例如输入字符串到这个输入框里

 

2、class属性 class_name,tag名

#根据class_name选择元素,返回的是一个列表
里面都是class属性值为title-content-title 的元素对应的webelement对象
elements=driver.find_elements(By.CLASS_NAME,'title-content-title')
#for element in elements:
# print(element.text)

 

 

打印出text的内容
#for element in elements:
# print(element.text)

问题:find_elements得到的是一个列表,该怎么点击对应的列表呢?

belements.click()
AttributeError: 'list' object has no attribute 'click'

解决:点击对应的列表第几个,有两种方式

方法一:
belements=driver.find_elements(By.CLASS_NAME,'title-content-title')
belements[5].click()
方法二:
belements=driver.find_elements(By.CLASS_NAME,'title-content-title')[5]
belements.click()

https://wenku.baidu.com/view/8a355b0aa9ea998fcc22bcd126fff705cd175c40.html

思考:怎么实现循环点击一遍?
未解决
belements=driver.find_elements(By.CLASS_NAME,'title-content-title')
#belements[5].click()
for i in range(belements):
belements.click(i)
i+1
报错:得把列表个数用函数再转换一遍:https://www.runoob.com/python3/python3-list.html
for i in range(len(belements)):

还有一个错误是

belements.click(i) 姐妹你脑袋糊了

最终:
# coding = utf-8
from selenium import webdriver
from selenium.webdriver.common.by import By
driver=webdriver.Chrome()
driver.get('http://wwww.baidu.com')
#bid=driver.find_element(By.ID,'kw')
#bid.send_keys('selenium\n')
#driver.find_element(By.ID,'su').click()

belements=driver.find_elements(By.CLASS_NAME,'title-content-title')
#belements[5].click()
i=0
for i in range(len(belements)):
belements[i].click()
i+1
#for element in belements:
# print(element.text)
pass

3、xpath定位元素

//*[@id="hotsearch-content-wrapper"]/li[1]/a/span[2]

 

posted @ 2022-07-02 16:57  予璇CC123  阅读(974)  评论(0)    收藏  举报