• selenium元素定位(三)


      使用selenium就不可避免的要提到界面元素定位,通过元素定位来实现一系列的逻辑操作。

      selenium提供了8中元素定位的方式:

        id、name、class name、tag name、link text、partial link text、xpath、css selector。

      其中使用xpath来根据id或class来定位元素的可以解决大部分问题。

      这8中定位方式在python selenium中使用的对应具体方法为:

    1 find_element_by_id()
    2 find_element_by_name()
    3 find_element_by_class_name()
    4 find_element_by_tag_name()
    5 find_element_by_link_text()
    6 find_element_by_partial_link_text()
    7 find_element_by_xpath()
    8 find_element_by_css_selector()

      具体用法:

      平常我们使用浏览器打开一个web网页,通过F12可以查看它的html元素,它是这样子的:

    <!doctype html>
    <html>
      <head>
         <meta charset="utf-8">
         <title></title>
      </head>
        
      <body>
         <form id="form" action="">
           姓名:<input id="name" class="fm" type="text" name="yourname" size="30" maxlength="20" value="输入框的长度为30,允许最大字符数为20"><br> 
       </form>
     </body>
    </html>

      我们可以根据html元素来定位input标签的输入框。

       1、通过set_window_size()方法来设置浏览器的大小。

    1 from selenium import webdriver
    2 
    3 chromedriver = "C:Program FilesGoogleChromeApplicationchromedriver"
    4 browser = webdriver.Chrome(chromedriver)
    5 browser.get("http://m.baidu.com")
    6 # 参数数字为像素点
    7 print("设置浏览器宽480、高800显示")
    8 browser.set_window_size(480, 800)
    9 browser.quit()

      2、通过back()和forward()方法来进行回退与前进操作。

     1 from selenium import webdriver
     2 
     3 chromedriver = "C:Program FilesGoogleChromeApplicationchromedriver"
     4 browser = webdriver.Chrome(chromedriver)
     5 #访问百度首页
     6 first_url= 'http://www.baidu.com'
     7 print("now access %s" %(first_url))
     8 browser.get(first_url)
     9 
    10 #访问新闻页面
    11 second_url='http://news.baidu.com'
    12 print("now access %s" %(second_url))
    13 browser.get(second_url)
    14 
    15 #返回(后退)到百度首页
    16 print("back to  %s "%(first_url))
    17 browser.back()
    18 
    19 #前进到新闻页
    20 print("forward to  %s"%(second_url))
    21 browser.forward()

      3、利用id定位百度输入框来进行输入值,进行点击操作。

      通过F12可以看到百度输入框id为“kw”,百度一下,搜索按钮id为“su”。

    from selenium import webdriver
    
    chromedriver = "C:Program FilesGoogleChromeApplicationchromedriver"
    browser = webdriver.Chrome(chromedriver)
    #访问百度首页
    first_url= 'http://www.baidu.com'
    browser.get(first_url)
    browser.find_element_by_id("kw").clear()
    browser.find_element_by_id("kw").send_keys("selenium")
    browser.find_element_by_id("su").click()

      4、利用其他方式定位百度输入框来进行输入值,进行点击操作。

     1 # coding = utf-8
     2 from selenium import webdriver
     3 
     4 chromedriver = "C:Program FilesGoogleChromeApplicationchromedriver"
     5 browser = webdriver.Chrome(chromedriver)
     6 #访问百度首页
     7 first_url= 'http://www.baidu.com'
     8 browser.get(first_url)
     9 
    10 #通过name方式定位
    11 browser.find_element_by_name("wd").send_keys("selenium")
    12 #通过tag name方式定位
    13 browser.find_element_by_tag_name("input").send_keys("新闻")
    14 #通过class name 方式定位
    15 browser.find_element_by_class_name("s_ipt").send_keys("军事")
    16 #通过CSS方式定位
    17 browser.find_element_by_css_selector("#kw").send_keys("gun")
    18 #通过xphan方式定位
    19 browser.find_element_by_xpath("//input[@id='kw']").send_keys("AI")
    20 
    21 # 点击搜索
    22 browser.find_element_by_id("su").click()
    23 browser.quit()

      

  • 相关阅读:
    使用ActivityGroup来切换Activity和Layout
    Fragment
    [Java]LeetCode297. 二叉树的序列化与反序列化 | Serialize and Deserialize Binary Tree
    [Swift]LeetCode298. 二叉树最长连续序列 $ Binary Tree Longest Consecutive Sequence
    [Swift]LeetCode296. 最佳开会地点 $ Best Meeting Point
    [Swift]LeetCode294. 翻转游戏之 II $ Flip Game II
    [Swift]LeetCode293. 翻转游戏 $ Flip Game
    [Swift]LeetCode291. 单词模式 II $ Word Pattern II
    [Postman]发出SOAP请求(18)
    [Postman]生成代码段(17)
  • 原文地址:https://www.cnblogs.com/award/p/8660968.html
Copyright © 2020-2023  润新知