python Selenium 元素定位

Selenium常用的定位元素的方式

id      

find_element_by_id()

name

find_elemnent_by_name()

class name

find_element_by_class_name()

tag name

find_element_by_tag_name()

link text

find_element_by_link_text()

partial link text

find_element_by_partial_link_text()

xpath

find_element_by_xpath()

css selector

find_element_by_css_selector()

python Selenium 元素定位_第1张图片

一、以下总结了5种js定位的方法
除了id是定位到的是单个element元素对象,其它的都是elements返回的是list对象
1.通过id获取
document.getElementById(“id”)
2.通过name获取

 document.getElementsByName(“Name”)
返回的是list
3.通过标签名选取元素
document.getElementsByTagName(“tag”)
4.通过CLASS类选取元素
document.getElementsByClassName(“class”)
兼容性:IE8及其以下版本的浏览器未实现getElementsByClassName方法
5.通过CSS选择器选取元素
document.querySelectorAll(“css selector")
兼容性:IE8及其以下版本的浏览器只支持CSS2标准的选择器语法




Class 带空格的复合类定位

from selenium import webdriver
driver = webdriver.Chrome()
driver.get('https://mail.163.com')
driver.find_element_by_id('lbNormal').click()
driver.switch_to.frame('x-URS-iframe') #选择Frame
#带空格的复合类定位元素
""""
class,复合类定位时可用css 和 class_name的方式定位
class_name取其中一个唯一类名定位即可,如果不唯一同样可以用elements的方式索引获得需要定位的元素
查看类名的唯一性可在元素中直接搜索
"""
#1.直接用class=‘j-inputtext dlemail’css定位
driver.find_element_by_css_selector("[class='j-inputtext dlemail']").send_keys('qq')
#2.elements查找的方式定位
element_username = driver.find_elements_by_css_selector('.j-inputtext')
element_username[0].send_keys('123') #此处的index索引从0开始,可以从页面查找的方式找出我们需要的元素为第几个
#class_name不唯一时定位元素,elements 索引
driver.find_elements_by_class_name('j-inputtext')[0].send_keys("456")
username_input = driver.find_element_by_css_selector("[class='j-inputtext dlemail']").get_attribute("value") #获取输入的文本内容
print(username_input)
js="return document.getElementsByName(\"email\")[0].value;" #括号中的引号转义字符
username_input = driver.execute_script(js) #执行js脚本获取元素属性



python Selenium 元素定位_第2张图片

你可能感兴趣的:(python3)