吾爱破解 - 52pojie.cn

 找回密码
 注册[Register]

QQ登录

只需一步,快速开始

查看: 1701|回复: 6
收起左侧

[Python 转载] selenium常用8种定位元素方法练习程序

  [复制链接]
qunaliangne 发表于 2020-11-5 15:01
用这个程序前确保能正常使用selenium模块调起浏览器,我代码使用的是谷歌浏览器,如需更改在代码里更改,代码写有注释,如不能调起浏览器百度查下怎么安装
代码能直接运行,因为这是我会了之后写的,不知道有哪些对萌新不友好的地方,欢迎指出,看到了我会抽空修改,有能力的也可以二次开发



[Python] 纯文本查看 复制代码
"""
练习抓取页面标签、元素
"""
from selenium import webdriver
import selenium
#from selenium.webdriver.common.keys import Keys
from time import sleep

class element_main():

    def __init__(self):
        #如需使用其他浏览器,在这里修改self.diver=webdriver.你使用的浏览器
        #如火狐是 :self.diver=webdriver.Firefox()
        self.diver=webdriver.Chrome()
        self.diver.get("https://www.baidu.com/")

    def html_info(self,html):
        self.diver.get(html)

    def page_element_name(self,diver=None,name=None):

        return self.diver.find_element_by_name(f"{name}")

    def page_element_id(self,diver=None,id=None):
        diver=self.diver.find_element_by_id(f"{id}")
        print(diver)
        return diver

    def page_element_class_name(self,diver=None,classname=None):
        diver=self.diver.find_element_by_class_name(f"{classname}")
        print(diver)
        return diver

    def page_element_xpath(self,diver=None,xpath=None):
        diver=self.diver.find_element_by_xpath(f"{xpath}")
        print(diver)
        return diver

    def page_element_link_text(self,diver=None,link_text=None):
        diver=self.diver.find_element_by_link_text(f"{link_text}")
        print(diver)
        return diver

    def page_element_css_selector(self,diver=None,css_selector=None):
        diver=self.diver.find_element_by_css_selector(f"{css_selector}")
        print(diver)
        return diver

    def page_element_tag_name(self,diver=None,tag_name=None):
        diver=self.diver.find_element_by_tag_name(f"{tag_name}")
        print(diver)
        return diver

    def page_element_partial_link_text(self,diver=None,partial_link_text=None):
        diver=self.diver.find_element_by_partial_link_text(f"{partial_link_text}")
        print(diver)
        return diver

    @staticmethod
    def show_menu():
        sleep(2)
        print('请选择如下功能:')
        print('1.练习捕捉页面find_element_by_name:')
        print('2.练习捕捉页面find_element_by_id:')
        print('3.练习捕捉页面find_element_by_class_name:')
        print('4.练习捕捉页面find_element_by_xpath:')
        print('5.练习捕捉页面find_element_by_link_text:')
        print('6.练习捕捉页面find_element_by_css_selector:')
        print('7.练习捕捉页面find_element_by_tag_name:')
        print('8.练习捕捉页面find_element_by_partial_link_text:')
        print('9.建议直接在浏览器上输入网址,跳转网页,输入格式:https://www.baidu.com/')
        print('10.结束练习:')

    def str_input(self):
        input_name=str(input("输入你的值"))
        return input_name



    def run_main(self):
        while True:
            self.show_menu()
            num_menu=int(input("输入你需要练习功能的序号"))

            if num_menu==1:
                while True:
                    try:
                        data_name=self.page_element_name(name=self.str_input())
                        if not data_name==None:
                            data_menu=int(input("输入你下一步的操作: \n1:点击操作  \n2:输入内容"))
                            if data_menu==1:
                                data_name.click()
                            elif data_menu==2:
                                data_name.send_keys('恭喜捕捉成功')
                            else:
                                print('没有这个选项,惩罚你瞎选,重新来')
                    except selenium.common.exceptions.NoSuchElementException:                       
                        print("捕捉失败,重新输入")
                    else:
                        break

            elif num_menu==2:

                while True:
                    try:
                        data_name=self.page_element_id(id=self.str_input())
                        if not data_name==None:
                            data_menu=int(input("输入你下一步的操作: \n1:点击操作  \n2:输入内容"))
                            if data_menu==1:
                                data_name.click()
                            elif data_menu==2:
                                data_name.send_keys('恭喜捕捉成功')
                            else:
                                print('没有这个选项,惩罚你瞎选,重新来')
                    except selenium.common.exceptions.NoSuchElementException:
                        print("捕捉失败,重新输入")
                    else:
                        break

            elif num_menu==3:

                while True:
                    try:
                        data_name=self.page_element_class_name(classname=self.str_input())
                        if not data_name==None:
                            data_menu=int(input("输入你下一步的操作: \n1:点击操作  \n2:输入内容"))
                            if data_menu==1:
                                data_name.click()
                            elif data_menu==2:
                                data_name.send_keys('恭喜捕捉成功')
                            else:
                                print('没有这个选项,惩罚你瞎选,重新来')
                    except selenium.common.exceptions.NoSuchElementException:
                        print("捕捉失败,重新输入")
                    else:
                        break

            elif num_menu==4:

                while True:
                    try:
                        data_name=self.page_element_xpath(xpath=self.str_input())
                        if not data_name==None:
                            data_menu=int(input("输入你下一步的操作: \n1:点击操作  \n2:输入内容"))
                            if data_menu==1:
                                data_name.click()
                            elif data_menu==2:
                                data_name.send_keys('恭喜捕捉成功')
                            else:
                                print('没有这个选项,惩罚你瞎选,重新来')
                    except selenium.common.exceptions.NoSuchElementException:
                        print("捕捉失败,重新输入")
                    else:
                        break

            elif num_menu==5:

                while True:
                    try:
                        data_name=self.page_element_link_text(link_text=self.str_input())
                        if not data_name==None:
                            data_menu=int(input("输入你下一步的操作: \n1:点击操作  \n2:输入内容"))
                            if data_menu==1:
                                data_name.click()
                            elif data_menu==2:
                                data_name.send_keys('恭喜捕捉成功')
                            else:
                                print('没有这个选项,惩罚你瞎选,重新来')
                    except selenium.common.exceptions.NoSuchElementException:
                        print("捕捉失败,重新输入")
                    else:
                        break

            elif num_menu==6:

                while True:
                    try:
                        data_name=self.page_element_css_selector(css_selector=self.str_input())
                        if not data_name==None:
                            data_menu=int(input("输入你下一步的操作: \n1:点击操作  \n2:输入内容"))
                            if data_menu==1:
                                data_name.click()
                            elif data_menu==2:
                                data_name.send_keys('恭喜捕捉成功')
                            else:
                                print('没有这个选项,惩罚你瞎选,重新来')
                    except selenium.common.exceptions.NoSuchElementException:
                        print("捕捉失败,重新输入")
                    else:
                        break

            elif num_menu==7:

                while True:
                    try:
                        data_name=self.page_element_tag_name(tag_name=self.str_input())
                        if not data_name==None:
                            data_menu=int(input("输入你下一步的操作: \n1:点击操作  \n2:输入内容"))
                            if data_menu==1:
                                data_name.click()
                            elif data_menu==2:
                                data_name.send_keys('恭喜捕捉成功')
                            else:
                                print('没有这个选项,惩罚你瞎选,重新来')
                    except selenium.common.exceptions.NoSuchElementException:
                        print("捕捉失败,重新输入")
                    else:
                        break

            elif num_menu==8:

                while True:
                    try:
                        data_name=self.page_element_partial_link_text(partial_link_text=self.str_input())
                        if not data_name==None:
                            data_menu=int(input("输入你下一步的操作: \n1:点击操作  \n2:输入内容"))
                            if data_menu==1:
                                data_name.click()
                            elif data_menu==2:
                                data_name.send_keys('恭喜捕捉成功')
                            else:
                                print('没有这个选项,惩罚你瞎选,重新来')
                    except selenium.common.exceptions.NoSuchElementException:
                        print("捕捉失败,重新输入")
                    else:
                        break
            elif num_menu==9:
                html_web=str(input("建议直接在浏览器上输入网址\n输入你要进入的网址"))
                self.html_info(html_web)
                
            elif num_menu==10:
                self.diver.quit()
                break



if __name__=="__main__":
    main_run=element_main()
    main_run.run_main()








免费评分

参与人数 1吾爱币 +1 收起 理由
嘚瑟挨顿揍 + 1 用心讨论,共获提升!

查看全部评分

发帖前要善用论坛搜索功能,那里可能会有你要找的答案或者已经有人发布过相同内容了,请勿重复发帖。

wangwanghz 发表于 2020-11-5 16:50
学习一下,谢谢大佬分享
cj4862 发表于 2020-11-5 16:56
wanshiz 发表于 2020-11-6 10:55
深水夜藏 发表于 2020-11-6 23:14
感谢分享,学习了
phyiscsdhl2020 发表于 2020-11-12 16:47
正好在学习定位,谢谢大佬
您需要登录后才可以回帖 登录 | 注册[Register]

本版积分规则

返回列表

RSS订阅|小黑屋|处罚记录|联系我们|吾爱破解 - LCG - LSG ( 京ICP备16042023号 | 京公网安备 11010502030087号 )

GMT+8, 2024-11-25 23:19

Powered by Discuz!

Copyright © 2001-2020, Tencent Cloud.

快速回复 返回顶部 返回列表