总结一下:
十四、Selenium的一些常用语法和方法****
语法/方法
描述
from selenium import webdriver
导入Selenium库
from selenium.webdriver.common.by import By
导入定位策略的枚举类
from selenium.webdriver.support.ui import WebDriverWait
导入等待元素加载的类
from selenium.webdriver.support import expected_conditions as EC
导入等待条件的类
driver = webdriver.Chrome()
创建浏览器对象,可以选择不同的浏览器
driver.get(‘高级检索-中国知网’)
打开指定的URL
driver.find_element(By.ID, ‘element_id’)
查找元素,可以使用不同的定位策略
element.click()
单击元素
element.send_keys(‘文本’)
在元素上输入文本
element.clear()
清空元素内容
WebDriverWait(driver, 10).until(EC.presence_of_element_located((By.ID, ‘element_id’)))
等待元素出现
driver.switch_to.window(‘window_name’)
切换到指定窗口
driver.switch_to.frame(‘frame_name’)
切换到指定iframe
driver.execute_script(‘javascript_code’)
执行JavaScript代码
driver.save_screenshot(‘screenshot.png’)
保存屏幕截图
driver.quit()
关闭浏览器并退出驱动程序
十五、选取元素的方法
定位策略
示例
描述
通过ID查找元素
driver.find_element(By.ID, ‘element_id’)
使用元素的ID属性来定位元素。
通过名称查找元素
driver.find_element(By.NAME, ‘element_name’)
使用元素的名称属性来定位元素。
通过标签名查找元素
driver.find_element(By.TAG_NAME, ‘element_tag’)
使用元素的HTML标签名称来定位元素。
通过类名查找元素
driver.find_element(By.CLASS_NAME, ‘element_class’)
使用元素的类名属性来定位元素。
通过CSS选择器查找元素
driver.find_element(By.CSS_SELECTOR, ‘css_selector’)
使用CSS选择器来定位元素。
通过XPath查找元素
driver.find_element(By.XPATH, ‘xpath_expression’)
使用XPath表达式来定位元素。
通过链接文本查找元素
driver.find_element(By.LINK_TEXT, ‘link_text’)
使用链接文本来定位链接元素。
通过部分链接文本查找元素
driver.find_element(By.PARTIAL_LINK_TEXT, ‘partial_link_text’)
使用部分链接文本来定位链接元素。
十六、Selenium**** CSS选择器
CSS选择器是一种用于选择HTML元素的模式。它允许我们根据元素的标签名、类名、ID、属性等属性进行选择。CSS选择器的语法简单而灵活,是前端开发中常用的定位元素的方式。
selenium中的css定位,实际是通过css选择器来定位到具体元素,css选择器来自于css语法。CSS定位有以下显著优点:
1、语法简洁
2、对比其他定位方式,定位效率更快
3、对比其他定位方式,定位更稳定
css选择器语法:
基础选择器
选择器
格式
示例
示例说明
选择全部
选择全部元素
标签选择器
html标签
p
选择所有<p>元素
ID选择器
#id属性值
#su
选择所有id='su'的元素
类选择器
.class属性值
.s_btn
选择所有class='s_btn'的元素
属性选择器1
属性名
type
选择所有带type属性的元素
属性选择器2
属性名='属性值'
type="submit"
选择所有type="submit"的元素
属性选择器3
属性名~='属性值'
type~="submit"
选择所有type包含"submit"的元素
属性选择器4
属性名|='属性值'
type|="submit"
选择所有type以"submit"开头的元素
备注:某些元素属性有多个值(如class属性),值表现为以空格隔开,使用时需要单个取出使用。
组合选择器
组合选择器就是同时使用多个基础选择器,从而更好地筛选出目标元素
选择器
格式
示例
示例说明
标签指定属性
标签加属性描述
input#su
选择所有id='su'的<input>元素
并集
元素1,元素2
div,p
选择所有<div>和<p>元素
父子
元素1>元素2
div>p
选择所有父级是<div>的<p>元素
后代
元素1 元素2
div p
选择<div>中的所有<p>元素
相邻
元素1+元素2
div+p
选择<div>同级后的相邻<p>元素
同级
元素1~元素2
div~p
选择<div>同级后的所有<p>元素
伪属性选择器
伪属性选择器是指元素在html中实际并不存在该属性,是由css定义的拓展描述属性。
选择器
格式
示例
示例说明
唯一子元素
:only-child
p:only-child
选择所有<p>元素且该元素是其父级的唯一一个元素
第一子元素
:first-child
p:first-child
选择所有<p>元素且该元素是其父级的第一个元素
最后子元素
:last-child
p:last-child
选择所有<p>元素且该元素是其父级的最后一个子元素
顺序选择器
:nth-child(n)
p:nth-child(2)
选择所有<p>元素且该元素是其父级的第二个子元素
顺序类型选择器
:nth-of-type(n)
p:nth-of-type(2)
选择所有<p>元素且该元素是其父级的第二个<p>元素
倒序选择器
:nth-last-child(n)
p:nth-last-child(2)
选择所有<p>元素且该元素是其父级的倒数第二个子元素
倒序类型选择器
:nth-last-of-type(n)
p:nth-last-of-type(2)
选择所有<p>元素且该元素是其父级的倒数第二个<p>元素
css常用的定位方式:
通过class定位,一个标签有多个class中间的空格用点代替,通过父标签的父标签定位p,在通过p定位子标签input,通过标签+class定位
项目 Value
#element element: div p 选择div标签元素内部的所有p标签元素
#element>element: div>p 选择父元素为div标签元素的所有p标签元素
#element element: div p div标签元素内部的所有p标签元素
#element>element: div>p 选择父元素为div标签元素的所有p标签元素
#element+element: div+p 选择紧接在div元素之后的所有p元素
#id: #firstname 选择id=‘fistname’的所有元素
#[attritube=value]:[target=_blank] 选择target="_blank"的所有元素
#[attribute]: [target] 选择带有target属性的所有元素
#[attritube=value]:[title=flower] 选择title属性包含单词‘flower’的所有元素
#:first-child p:first-child 选择属于父元素的第一个子元素的每个p标签元素
#[attribute^=value] a[src^=‘https’] 选择其src属性以’https’开头的每个a标签元素
#[attribute= v a l u e ] a [ s r c =value] a[src=value]a[src=’.pdf’] 选择其src属性以’.pdf’结尾的所有a标签元素
#[attribute*=value] a[src*=‘abc’] 选择其src属性包含’abc’子串的每个a标签元素
#:first-of-type p: first-of-type 选择父元素的首个p标签元素的每个p标签元素(所有p标签对应的父标签的第一个子p标签元素)
#:last-of-type p:last-of-type 选择父元素的最后一个p标签元素的每个p标签元素(所有p标签对应的父标签的最后一个子p标签元素)
#:only-of-type p:only-of-type 选择父元素里面唯一的p标签元素的每个p标签元素(所有p标签对应的父标签元素只有一个子p标签元素)
#:nth-child(n) p:nth-child(2) 选择属于父元素的第二个子元素的每个p标签元素(所有的p标签的父标签对应的第二个子标签元素)
#:only-child p:only-child 选择父元素里面只有一个标签的每个p标签元素(父标签里面只有一个p标签)
#:nth-last-child(n) p:nth-last-child(2) 选择属于父元素的倒数第二个子元素的每个p标签元素(所有的p标签的父标签对应的倒数第二个子标签元素)
#:nth-of-type(n) p:nth-of-type(2) 选择属于其父标签元素的第二个p标签的每个p标签元素(所有p标签对应的父标签的第二个p标签元素,也就是这个和p标签平级)
#:nth-last-of-type(n) p:nth-last-of-type(2) 选择属于其父标签元素的倒数第二个p标签的每个p标签元素(所有p标签对应的父标签的倒数第二个p标签元素,也就是这个和p标签平级)
#:last-child p:last-child 选择属于其父标签元素最后一个子元素是p标签的每个p标签元素(父标签的最后一个标签必须是p标签)
十七、selenium 获取href
Selenium是一个常用的自动化测试工具,可用于模拟用户操作浏览器。在Web开发和爬虫中,经常需要从网页中获取链接地址(href),而Selenium提供了各种方式来实现这个目标。 下面看如何使用Selenium的find_element(By.XPATH,‘xpath_expression’ )方法来获取网页中的href属性值。
什么是XPath?
XPath(XML Path Language)是一种用于在XML和HTML文档中定位元素的语言。在Selenium中,我们可以使用XPath来定位网页中的元素,包括链接。 XPath表达式通过路径和表达式来选择元素,常用的表达式包括//选取节点)、@选取属性)等。
使用find_element(By.XPATH,‘xpath_expression’ )获取href(链接地址)的示例代码:
from selenium import webdriver
创建浏览器驱动
driver = webdriver.Chrome()
打开网页
driver.get("高级检索-中国知网")
使用XPath定位链接。使用XPath表达式//a[@href]定位所有包含href属性的链接元素。这个表达式指定了选择所有a标签(链接),并且这些标签包含href属性。
element = driver.find_element(By.XPATH,"//a[@href]") # 获取链接的地址。
href = element.get_attribute("href") # 将获取的地址保存在href变量中。
print(href)
关闭浏览器
driver.quit()
注:本系列文章参考部分网文,并根据调试过程进行了修改和完善,侵删。
版权归原作者 老菜鸟YDZ 所有, 如有侵权,请联系我们删除。