qunaliangne 发表于 2020-11-5 15:01

selenium常用8种定位元素方法练习程序

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



"""
练习抓取页面标签、元素
"""
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()








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

正好在学习定位,谢谢大佬
页: [1]
查看完整版本: selenium常用8种定位元素方法练习程序