selenium元素定位实战
一、selenium环境搭建
环境搭建步骤:
1、在终端输入安装selenium的第三方的库的命令:pip3 install selenium
2、安装chrome的浏览器
3、下载浏览器对应的驱动程序(driver):http://npm.taobao.org/mirrors/chromedriver/
先查看浏览器的版本:浏览器--设置--关于
4.打开下载驱动的连接,下载与之相匹配的driver版本:(没有55也可以下45)
4、然后把chromedriver放到python的目录下(我是放在bin目录下):
打开终端cd ..进入根目录,cd/usr/local/bin 进入bin目录
输入 open . 打开bin目录,将解压后的包拖进来
5.终端输入chromedriver验证是否安装成功
二、元素定位的八大方法
1.通过id(打开chrome浏览器,打开百度,右击点击检查打开开发者模式)
搜索框输入的元素
百度一下的元素
from selenium import webdriver
import time as t
#指定被测的浏览器并且对webdriver进行实例化
driver=webdriver.Chrome()
#导航到被测的网址
driver.get('http://www.baidu.com/')
#等待三秒
t.sleep(3)
driver.find_element_by_id('kw').send_keys('彭于晏')
t.sleep(3)
driver.find_element_by_id('su').click()
t.sleep(5)
#退出
driver.quit()
2.通过name
from selenium import webdriver
import time as t
#指定被测的浏览器并且对webdriver进行实例化
driver=webdriver.Chrome()
#导航到被测的网址
driver.get('http://www.baidu.com/')
#等待三秒
t.sleep(3)
driver.find_element_by_name('wd').send_keys('彭于晏')
t.sleep(3)
driver.find_element_by_id('su').click() #百度一下没有name
t.sleep(5)
#退出
driver.quit()
3.通过class name
from selenium import webdriver import time as t #指定被测的浏览器并且对webdriver进行实例化 driver=webdriver.Chrome() #导航到被测的网址 driver.get('http://www.baidu.com/') #等待三秒 t.sleep(3) driver.find_element_by_class_name('s_ipt').send_keys('彭于晏') t.sleep(3) driver.find_element_by_class_name('btn self-btn bg s_btn').click() t.sleep(5) #出现空格和数字都不能执行 #退出 driver.quit()
执行后会结果如下:
/Applications/code/testdev/UI自动化测试/index.py:17: DeprecationWarning: find_element_by_* commands are deprecated. Please use find_element() instead driver.find_element_by_class_name('s_ipt').send_keys('彭于晏') /Applications/code/testdev/UI自动化测试/index.py:19: DeprecationWarning: find_element_by_* commands are deprecated. Please use find_element() instead driver.find_element_by_class_name('btn self-btn bg s_btn').click() Traceback (most recent call last): File "/Applications/code/testdev/UI自动化测试/index.py", line 19, indriver.find_element_by_class_name('btn self-btn bg s_btn').click() File "/Library/Frameworks/Python.framework/Versions/3.10/lib/python3.10/site-packages/selenium/webdriver/remote/webdriver.py", line 754, in find_element_by_class_name return self.find_element(by=By.CLASS_NAME, value=name) File "/Library/Frameworks/Python.framework/Versions/3.10/lib/python3.10/site-packages/selenium/webdriver/remote/webdriver.py", line 1238, in find_element return self.execute(Command.FIND_ELEMENT, { File "/Library/Frameworks/Python.framework/Versions/3.10/lib/python3.10/site-packages/selenium/webdriver/remote/webdriver.py", line 418, in execute self.error_handler.check_response(response) File "/Library/Frameworks/Python.framework/Versions/3.10/lib/python3.10/site-packages/selenium/webdriver/remote/errorhandler.py", line 243, in check_response raise exception_class(message, screen, stacktrace) selenium.common.exceptions.NoSuchElementException: Message: no such element: Unable to locate element: {"method":"css selector","selector":".btn self-btn bg s_btn"} (Session info: chrome=96.0.4664.55) Stacktrace: 0 chromedriver 0x00000001049ffd48 __gxx_personality_v0 + 548124 1 chromedriver 0x00000001049947a0 __gxx_personality_v0 + 108404 2 chromedriver 0x0000000104592b94 chromedriver + 158612 3 chromedriver 0x00000001045c2704 chromedriver + 354052 4 chromedriver 0x00000001045eb9f0 chromedriver + 522736 5 chromedriver 0x00000001045b76a0 chromedriver + 308896 6 chromedriver 0x00000001049c2920 __gxx_personality_v0 + 297204 7 chromedriver 0x00000001049d6924 __gxx_personality_v0 + 379128 8 chromedriver 0x00000001049db798 __gxx_personality_v0 + 399212 9 chromedriver 0x00000001049d77c8 __gxx_personality_v0 + 382876 10 chromedriver 0x00000001049b83f0 __gxx_personality_v0 + 254916 11 chromedriver 0x00000001049f0f78 __gxx_personality_v0 + 487244 12 chromedriver 0x00000001049f10ec __gxx_personality_v0 + 487616 13 chromedriver 0x0000000104a06920 __gxx_personality_v0 + 575732 14 libsystem_pthread.dylib 0x000000019e82b878 _pthread_start + 320 15 libsystem_pthread.dylib 0x000000019e8265e0 thread_start + 8
4.通过xpath name classname id 找不到的情况下用xpath
from selenium import webdriver
import time as t
#指定被测的浏览器并且对webdriver进行实例化
driver=webdriver.Chrome()
#导航到被测的网址
driver.get('http://www.baidu.com/')
#等待三秒
t.sleep(3)
driver.find_element_by_xpath('//*[@id="kw"]').send_keys('彭于晏')
t.sleep(3)
driver.find_element_by_xpath('//*[@id="su"]').click()
t.sleep(5)
#退出
driver.quit()
5.link text" 超连接
from selenium import webdriver
import time as t
driver=webdriver.Chrome()
driver.get('http://www.baidu.com/')
t.sleep(3)
driver.find_element_by_link_text('新闻').click() #精确点击新闻
t.sleep(5)
driver.quit()
6.partial link text" 超连接模糊匹配
from selenium import webdriver import time as t driver=webdriver.Chrome() driver.get('http://www.baidu.com/') t.sleep(3) driver.find_element_by_partial_link_text('hao').click() t.sleep(5) driver.quit()
8.css selector
from selenium import webdriver
import time as t
#指定被测的浏览器并且对webdriver进行实例化
driver=webdriver.Chrome()
#导航到被测的网址
driver.get('http://www.baidu.com/')
#等待三秒
t.sleep(3)
driver.find_element_by_css_selector('#kw').send_keys('彭于晏')
t.sleep(3)
driver.find_element_by_css_selector('#su').click()
t.sleep(5)
#退出
driver.quit()
8.tag name