03-一些基础的元素定位方法

driver = webdriver.Chrome()
driver.maximize_window()
driver.get("/")
sleep(1)

通过ID进行元素定位

# ele1 = driver.find_element_by_id("searchKey") # 老
ele1 = driver.find_element(by=By.ID, value='searchKey')

通过name进行元素定位

# ele2 = driver.find_element_by_name("searchKey") # 老
ele2 = driver.find_element(by=By.NAME, value='searchKey')

通过class进行元素定位 .

# ele3 = driver.find_element_by_class_name("searchKey") # 老
ele3 = driver.find_element(by=By.CLASS_NAME, value='s_int')

通过tag_name定位

# ele4 = driver.find_element_by_tag_name('input') # 老
ele4 = driver.find_element(By.TAG_NAME, 'input')

通过linktext定位超链接,有超链接只能拿内容就行

elex1 = driver.find_element(By.LINK_TEXT, '金牌卧底')
elex2 = driver.find_element(By.PARTIAL_LINK_TEXT, '金牌')  # 模糊匹配

CSS定位

# 通过绝对路径, 空格后既是子节点, .是class;#是id
ele0 = driver.find_element(By.CSS_SELECTOR, "div div div div.top_l")

通过css——selector 定位

ele5 = driver.find_element(By.CSS_SELECTOR, '[name="searchKey"]')  # 或者input[name="searchKey"]

通过第几位来定位,nth-child(1)

elex3 = driver.find_element(By.CSS_SELECTOR, "dl.hot_recommend:nth-child(2) a")

通过兄弟元素定位 兄弟+想要定位的元素

elex4 = driver.find_element(By.CSS_SELECTOR, "dl.hot_recommend dt+dd")

通过xpath 定位,不同于css的空格,xpath子节点是/

1. // 表示从标签任意节点开始,也就是前面有一万个div和一个input,只要 //div/input 就可以

2. 单元素:@后是属性名,不加@就是标签名, //input[@name=‘searchKey’] input中,name为searchKey的元素。

ele6 = driver.find_element(By.XPATH, "//input[@name='searchKey']")

3. 多元素定位:and 连接多个属性

ele7_pre = '//dl[@class="hot_recommend" and @id="topBooks2"]/dt/a'
ele7 = driver.find_element(By.XPATH, ele7_pre)

4. 模糊匹配定位: 1. //div[contains(@class,“Banner”)] (推荐) ; 2. //div[start-with(属性, “很长的名称”)];

ele8 = driver.find_element(By.XPATH, '//div[contains(@class,"Bann")]')  # 新老

ele9 = driver.find_element(By.XPATH, ‘//div[start-with(@class,“cha”)]’) # 老

5.文本定位

ele10 = driver.find_element(By.XPATH, '//h2[contains(text(),"热门")]')

6. /… 就是找父元素

7. //p/*[0]第一个子元素

selenium 4.0有的网格定位:要先有一个参照物,然后定位。需要导入对应的库

from selenium.webdriver.support.relative_locator import locate_with

above 上方;below下方;leftof 左;rightof 右;near

elex5 = driver.find_element(locate_with(By.XPATH, "//a").above({By.LINK_TEXT: "成吉思汗的动物军团"}))

获取属性

driver.find_element(By.XPATH, '//input').send_keys("1234")
attr = driver.switch_to.active_element.get_attribute("name")
print(attr)

js改变元素显示效果

driver.execute_script(
    "arguments[0].setAttribute('style',arguments[1]);",
    elex5,
    "border: 2px solid green;"  # 边框绿色
)
sleep(2)
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值