#coding=utf-8
from selenium import webdriver
from HTMLTestRunner import HTMLTestRunner
from selenium.webdriver.common.keys import Keys
from selenium.webdriver import ActionChains
from selenium.webdriver.common.by import By
from selenium.webdriver.support.ui import WebDriverWait
from selenium.webdriver.support import expected_conditions as ec
import unittest
import time
class element_test(unittest.TestCase):
"""介绍元素定位方法,csdn首页测试。id、name、tag、class、link_text、partial link、xpath、css。
tag根据标签来定位、xpath根据路径来定位、css是用css选择器来定位(速度快过xpath)"""
@classmethod
def setUpClass(cls) -> None:
cls.browser = webdriver.Chrome()
cls.url = "https://www.csdn.net/"
cls.browser.get(cls.url)
@unittest.skip("跳过测试")
def test_id(self):
"""id、class、xpath定位
xpath:1.绝对路径(/html/body/..),2.//input表示input标签,3.//*表示任意标签,4.[@id=xx]表示元素属性值,5.div[2]表示第二个div标签
6.逻辑运算[@id=xx and @class=xx],7.包含[contains(@id,'xx')],8.text文本[text(),'xx']"""
search_window = self.browser.current_window_handle
search = self.browser.find_element_by_id("toolber-keyword") #用id进行定位元素
search.clear()
search.send_keys("Theahe")
self.browser.find_element_by_xpath('//*[@id="nav-left-menu"]/div/a').click() #用xpath进行定位元素,直接用谷歌开发者工具copy XPath就可找到路径
self.browser.implicitly_wait(5) #隐式等待
current_window = self.browser.window_handles #当前所有窗口的句柄
#time.sleep(3)
self.browser.switch_to.window(search_window) #切换窗口到首页
self.browser.find_element_by_class_name("toolbar_to_feed").click() #用classname定位
@unittest.skip("跳过测试")
def test_link(self):
"""link_test链接的文本,partial_link_text是部分链接文本(相当于模糊查询)"""
self.browser.maximize_window() #控制浏览器大小,全屏展示
self.browser.find_element_by_link_text("首页").click() #点击首页
self.browser.find_element_by_partial_link_text("坛").click() #点击论坛
def test_css(self):
"""css定位:.class,#id,*所有元素,p标签,>层级关系,+ 同级下一个标签,[]属性定位
[id *= xx]id包含xx的元素,[id ^= xx]以xx开头的,[id $= xx]以xx结尾,p:nth-child(2)第二个p标签"""
self.browser.find_element_by_css_selector('.active').click() #class是active
self.browser.find_element_by_css_selector("[title='下载']").click() #属性值
blogClick = self.browser.find_element_by_css_selector("#blogClick") #id是blogClick
ActionChains(self.browser).move_to_element(blogClick).perform() #鼠标悬停
write = WebDriverWait(self.browser,5,0.5).until(ec.visibility_of_element_located((By.CSS_SELECTOR,'div#writeGuide > a'))) #判断页面元素是否存在
#用谷歌开发者工具copy selector就可找到路径
write.click()
@classmethod
def tearDownClass(cls) -> None:
#quit关闭所有窗口退出程序,close关闭当前窗口(当打开多个窗口时用来关闭当前窗口)
cls.browser.quit()
if __name__ == '__main__':
unittest.main()
selenium元素定位方法介绍(与unittest结合、以csdn为例)
最新推荐文章于 2021-07-30 14:48:46 发布