selenium元素定位

Posted 在旅途上追忆寻梦

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了selenium元素定位相关的知识,希望对你有一定的参考价值。

  使用selenium就不可避免的要提到界面元素定位,通过元素定位来实现一系列的逻辑操作。

  selenium提供了8中元素定位的方式:

    id、name、class name、tag name、link text、partial link text、xpath、css selector。

  其中使用xpath来根据id或class来定位元素的可以解决大部分问题。

  这8中定位方式在python selenium中使用的对应具体方法为:

1 find_element_by_id()
2 find_element_by_name()
3 find_element_by_class_name()
4 find_element_by_tag_name()
5 find_element_by_link_text()
6 find_element_by_partial_link_text()
7 find_element_by_xpath()
8 find_element_by_css_selector()

  具体用法:

  平常我们使用浏览器打开一个web网页,通过F12可以查看它的html元素,它是这样子的:

<!doctype html>
<html>
  <head>
     <meta charset="utf-8">
     <title></title>
  </head>
    
  <body>
     <form id="form" action="">
       姓名:<input id="name" class="fm" type="text" name="yourname" size="30" maxlength="20" value="输入框的长度为30,允许最大字符数为20"><br> 
   </form>
 </body>
</html>

  我们可以根据html元素来定位input标签的输入框。

   1、通过set_window_size()方法来设置浏览器的大小。

1 from selenium import webdriver
2 
3 chromedriver = "C:\\Program Files\\Google\\Chrome\\Application\\chromedriver"
4 browser = webdriver.Chrome(chromedriver)
5 browser.get("http://m.baidu.com")
6 # 参数数字为像素点
7 print("设置浏览器宽480、高800显示")
8 browser.set_window_size(480, 800)
9 browser.quit()

  2、通过back()和forward()方法来进行回退与前进操作。

 1 from selenium import webdriver
 2 
 3 chromedriver = "C:\\Program Files\\Google\\Chrome\\Application\\chromedriver"
 4 browser = webdriver.Chrome(chromedriver)
 5 #访问百度首页
 6 first_url= \'http://www.baidu.com\'
 7 print("now access %s" %(first_url))
 8 browser.get(first_url)
 9 
10 #访问新闻页面
11 second_url=\'http://news.baidu.com\'
12 print("now access %s" %(second_url))
13 browser.get(second_url)
14 
15 #返回(后退)到百度首页
16 print("back to  %s "%(first_url))
17 browser.back()
18 
19 #前进到新闻页
20 print("forward to  %s"%(second_url))
21 browser.forward()

  3、利用id定位百度输入框来进行输入值,进行点击操作。

  通过F12可以看到百度输入框id为“kw”,百度一下,搜索按钮id为“su”。

from selenium import webdriver

chromedriver = "C:\\Program Files\\Google\\Chrome\\Application\\chromedriver"
browser = webdriver.Chrome(chromedriver)
#访问百度首页
first_url= \'http://www.baidu.com\'
browser.get(first_url)
browser.find_element_by_id("kw").clear()
browser.find_element_by_id("kw").send_keys("selenium")
browser.find_element_by_id("su").click()

  4、利用其他方式定位百度输入框来进行输入值,进行点击操作。

 1 # coding = utf-8
 2 from selenium import webdriver
 3 
 4 chromedriver = "C:\\Program Files\\Google\\Chrome\\Application\\chromedriver"
 5 browser = webdriver.Chrome(chromedriver)
 6 #访问百度首页
 7 first_url= \'http://www.baidu.com\'
 8 browser.get(first_url)
 9 
10 #通过name方式定位
11 browser.find_element_by_name("wd").send_keys("selenium")
12 #通过tag name方式定位
13 browser.find_element_by_tag_name("input").send_keys("新闻")
14 #通过class name 方式定位
15 browser.find_element_by_class_name("s_ipt").send_keys("军事")
16 #通过CSS方式定位
17 browser.find_element_by_css_selector("#kw").send_keys("gun")
18 #通过xphan方式定位
19 browser.find_element_by_xpath("//input[@id=\'kw\']").send_keys("AI")
20 
21 # 点击搜索
22 browser.find_element_by_id("su").click()
23 browser.quit()

  

 

以上是关于selenium元素定位的主要内容,如果未能解决你的问题,请参考以下文章

selenium+Python页面元素定位问题

『心善渊』Selenium3.0基础 — 4Selenium基础元素定位详解

selenium8种常用元素定位简介

Selenium基础篇之八大元素定位方式

java+selenium,请问该如何定位#shadow-root里面的元素?

python+selenium 定位隐藏元素