selenium学习(一)

selenium初体验:

from selenium import webdriver
from selenium.webdriver.common.by import By
#from selenium.webdriver.chrome.service import Service

#wd=webdriver.Chrome(service=Service(r'C:\newapp01\chromedriver\chromedriver.exe'))
wd=webdriver.Chrome()  #将chromedriver.exe的目录放在环境变量中,即可不用调用service,直接调用浏览器
wd.get('https://www.baidu.com')

element=wd.find_element(By.ID,'kw')   #找到input标签的的ID
#element.send_keys('通讯\n')           #输入字符,\n回车键进行搜索
element.send_keys('花')
element=wd.find_element(By.ID,'su')
element.click()
input()
#wd.quit()   #退出浏览器

注意:

pycharm可能找不到selenium模块
pip成功,pycharm识别不了”,这就是因为新建项目默认解释器是用“项目的解释器”的,
但是pip安装的第三方库是在python安装目录下,所以会识别不了。
所以要在pycharm的interpret中更换原始的解释器


选择元素

from selenium import webdriver
from selenium.webdriver.common.by import By

wd=webdriver.Chrome()
wd.get('https://www.xinshipu.com/chuyoufenlei/')

#如果是find_elements返回的是列表,如果是find_element返回的是匹配的第一个元素
#若没有符合的元素则返回空列表
#By.TAG_NAME,选择所有的tag名为div的元素,依据标签进行匹配
elements=wd.find_elements(by=By.CLASS_NAME, value='r-name')

for element in elements:
    print(element.text)

get_attribute用法:
element.get_attribute去获取标签的属性,
通过其的’outerHTML’属性获取对象所对应的整个html
通过其的‘innerHTML’获取某个元素的内部的HTML文本内容
获取输入框的文本

selenium新的定位方式参考博客

css表达式选择css官方语法文档参考博客
注意:
①逗号,相当于或||
②span:nth-child(2)表示拿到第二个span标签
span:nth-last-child(1)表示拿到最后一个span标签
③span:nth-of-type(2)表示选定的元素是父元素的第几个某类型(这里是span)的子节点
④+表示紧跟的兄弟节点,比如span+span,两个连在一起的兄弟节点span

Xpath和CSS常用语法的对比:
在这里插入图片描述
XPATH:

from selenium import webdriver
from selenium.webdriver.common.by import By
from selenium.webdriver.common.keys import Keys

wd=webdriver.Chrome()  #将chromedriver.exe的目录放在环境变量中,即可不用调用service,直接调用浏览器

wd.get('https://www.baidu.com/')

element=wd.find_element(By.XPATH,'/html/body/div')
#上面以/开头表示从根开始,是绝对路径。若//开头表示全局匹配,*表示通配符
#比如//div//p 等价于css中div p  ;//div/p等价于div>p

print(element.get_attribute('outerHTML'))
wd.quit()

几个注意的地方:
选择id为hello的元素,可以//[@id=‘hello’]
选择div中class为hello的元素,可以//div[@class=‘hello’]
xpath可以根据次序选择元素,如//p[2] 即选择p类型的第二个子元素
选择多个元素,如//div |//h1 等价与css中的div,h4
xpath可以选择父节点,css不行。如//
[@id=‘hello’]/…/…
xpanth选择后续兄弟节点 following-sibling:: 等价于css选择器中的~
xpanth可以选择前面的兄弟节点 preceding-sibling:: 而css中没有这样用法
如果我们先找id为hello的元素,再通过WebElement对象,选择概预算怒内部的P元素,必须加.符号
即wd.get(‘https://www.xxx.com/’)
hello=wd.find_element(By.ID,‘hello’)
element=hello.find_element(BY.XPATH,‘.//p’)

猜你喜欢

转载自blog.csdn.net/qq_44267691/article/details/124303664
今日推荐