使用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()