本帖最后由 草帽路飞UU 于 2022-8-25 16:43 编辑
Selenium 获取单一元素(find element)的主要方法有9种。在实际使用中,需要灵活根据实际情况选取不同的方法进行元素获取。
目录
1 根据id进行获取--find_element_by_id
2 根据class进行获取--find_element_by_class_name
3 根据xpath进行获取--find_element_by_xpath
4 根据name进行获取--find_element_by_name
5 根据tag name进行获取--find_element_by_tag_name
6 根据css进行获取--find_element_by_css_selector
7 根据链接的文本进行获取--find_element_by_link_text
8 根据部分链接的文本进行获取--find_element_by_partial_link_text
9 根据 By+locator定位器 进行获取--find_element
1 根据id进行获取--find_element_by_id
find_element_by_id("元素的id")
例子:获取bing的"国内版"按钮div bing的"国内版"按钮div为:<div id="est_cn" class="est_common est_selected">国内版</div> ################################################################################ # 在selenium查找该div代码: driver.get('https://cn.bing.com/') button_element = driver.find_element_by_id('est_cn') print(button_element.text) # button_element.text结果为"国内版"
2 根据class进行获取--find_element_by_class_name
find_element_by_class_name("元素的className")
例子:获取bing的"国内版"按钮div bing的"国内版"按钮class name为'est_common est_selected' ################################################################################ # 由于该class name有空格,不能直接使用如下方法获取 driver.find_element_by_class_name('est_common est_selected') # 报异常NoSuchElementException # 对于空格情况,取class name其中的一个就行 driver.get('https://cn.bing.com/') button_element = driver.find_element_by_class_name('est_common') print(button_element.text) # button_element.text结果为"国内版" # 或者 driver.get('https://cn.bing.com/') button_element = driver.find_element_by_class_name('est_selected') print(button_element.text) # button_element.text结果为"国内版" 注意,在本例中使用class name任意一个也能获取正确结果,但实际使用中需要注意带空格的class name取哪一个的问题。需要取唯一能定位该元素的class name。在class name不唯一的情况,find_element_by_class_name是获取第一个class name符合条件的元素。
3 根据xpath进行获取--find_element_by_xpath
find_element_by_xpath("元素的xpath")
例子:获取bing的"国内版"按钮div 首先获取元素的xpath,可以利用Chrome的开发者工具来进行快速获取
|