python
from selenium import webdriver
from selenium.webdriver.common.by import By
driver = webdriver.Chrome()
driver.maximize_window()#最大化窗口
#隐式等待
driver.implicitly_wait(10)
#打开网页
driver.get("https://www.zhipin.com/beijing/?ka=city-sites-101010100")
#定位到搜索框,然后输入内容
# driver.find_element(By.CSS_SELECTOR,'input[name="query"]').send_keys("测试工程师")
driver.find_element(By.CSS_SELECTOR,'.ipt-search').send_keys("测试工程师")
driver.find_element(By.XPATH, '//*[@id="wrap"]/div[3]/div/div[1]/div[1]/form/button').click()
"""
id
如果某个元素的有id属性,那么如果id属性的值唯一,则可以利用该属性的值定位
如果id属性的值是一串无序的字母或者数字,则不能使用,有可能是动态id
driver.find_element(By.ID,"id属性的值")
name
根据name的属性值来定位,但是如果name属性的值在当前页面不唯一,则是无法定位的
driver.find_element(By.NAME,"name值")
class name
class 属性的值,不唯一的可能性很大
driver.find_element(By.CLASS_NAME,'btn btn-search')
tag name(通过标签名本身选择,一般无法使用,不推荐)
driver.find_element(By.TAG_NAME,"标签名")
link text(一般不要使用)
partial link text(一般不要使用)
xpath
CSS_SELECTOR
例如driver.find_element(By.CSS_SELECTOR,'input[name="query"]')
根据<input name="query">而来
driver.find_element(By.CSS_SELECTOR,'.ipt-search')根据<input class='ipt-search'>而来
"""
补充知识:
1. CSS_SELECTOR 定位
CSS Selector 是一种通过 CSS 样式规则来选取 HTML 元素的方法。它基于元素的标签、类名、ID、属性等来进行定位。
常见的 CSS_SELECTOR 语法:
tag:选择标签名的元素,例如 div。
.class_name:选择具有指定类名的元素。
#id:选择具有指定 ID 的元素。
[attribute=value]:选择具有特定属性值的元素。
示例:使用 CSS_SELECTOR 定位
假设我们有以下 HTML 代码:
html
<div id="container">
<button class="btn" id="submitBtn">Submit</button>
<a href="https://example.com" class="link">Click Me</a>
</div>
使用 CSS_SELECTOR 定位按钮(button 标签,id="submitBtn"):
python
from selenium import webdriver
from selenium.webdriver.common.by import By
# 启动浏览器
driver = webdriver.Chrome()
# 打开网页
driver.get('https://example.com')
# 通过 CSS_SELECTOR 定位按钮
button = driver.find_element(By.CSS_SELECTOR, '#submitBtn')
button.click() # 点击按钮
# 关闭浏览器
driver.quit()
使用 CSS_SELECTOR 定位链接(a 标签,class="link"):
python
link = driver.find_element(By.CSS_SELECTOR, 'a.link')
link.click() # 点击链接
常见的 CSS_SELECTOR 示例:
通过类名:div.class_name
通过 ID:#element_id
通过属性:input[type="text"]
通过后代选择器:div > button(选择 div 中的 button 元素)
通过伪类:button:hover(选择被悬浮的按钮)
2. XPath 定位
XPath 是一种在 XML 文档中查找信息的语言,也可以用来定位 HTML 元素。它允许通过元素的路径、标签、属性、文本等来精确查找元素。
常见的 XPath 语法:
/tag:选择根元素下的 tag 元素。
//tag:选择页面中所有的 tag 元素。
//tag[@attribute='value']:选择具有指定属性的 tag 元素。
//*[text()='text_value']:根据元素的文本内容查找。
//tag[contains(@attribute, 'value')]:根据属性包含的值进行匹配。
示例:使用 XPath 定位
假设我们有以下 HTML 代码:
html
<div id="container">
<button class="btn" id="submitBtn">Submit</button>
<a href="https://example.com" class="link">Click Me</a>
</div>
使用 XPath 定位按钮(button 标签,id="submitBtn"):
python
button = driver.find_element(By.XPATH, '//*[@id="submitBtn"]')
button.click() # 点击按钮
使用 XPath 定位链接(a 标签,class="link"):
python
link = driver.find_element(By.XPATH, "//a[@class='link']")
link.click() # 点击链接
常见的 XPath 示例:
通过元素 ID://*[@id='element_id']
通过类名://*[contains(@class, 'class_name')]
通过文本://*[text()='Click Me']
通过属性://input[@type='text']
使用 contains://*[contains(@href, 'example')](查找包含特定文本的链接)