从零开始学python爬虫(八):selenium提取数据和其他使用方法

从零开始学python爬虫(八):selenium提取数据和其他使用方法,第1张

知识点:

知识点:了解 driver对象的常用属性和方法

注意:最新版本的selenium已经取消了这种格式,取而代之的是

你要先导入:

然后再:

知识点:掌握 driver对象定位标签元素获取标签对象的方法

代码实现,如下,获取腾讯新闻首页的新闻标签的内容。

知识点:掌握 元素对象的 *** 作方法

参考代码示例:

知识点:掌握 selenium控制标签页的切换

知识点:掌握 selenium控制frame标签的切换

知识点:掌握 利用selenium获取cookie的方法

知识点:掌握 selenium控制浏览器执行js代码的方法

知识点:掌握 手动实现页面等待

知识点:掌握 selenium开启无界面模式

知识点:了解 selenium使用**

知识点:了解 selenium替换user-agent

selenium是一个自动化测试框架,它拥有IDE和API接口,可以应用于Java, C# Python, Ruby等语言。用selenium来构建一个自动化的测试程序非常的简单。不过首先你需要熟悉web应用里面的request, response概念,以及XPath的用法。这里我将介绍一下如何利用Junit与selenium来实现自动化页面测试。

1 下载必要依赖文件selenium-server-standalone-2250jar, junit-47jar,并将它们放置到工程的lib文件夹下面 (我这里使用Firefox浏览器来作为客户端,所以就不需要下载额外的浏览器执行器,如果你想用IE或是Chrome做客户端,请下载对应的执行器

>

2 建立一个测试工程,在工程里创建一个测试文件,并添加如下代码:

import comthoughtworksseleniumSelenium;

import junitframeworkTestCase;

import orgjunitAfter;

import orgjunitBefore;

import orgjunitTest;

import orgjunitrunnerRunWith;

import orgjunitrunnersBlockJUnit4ClassRunner;

import orgopenqaseleniumBy;

import orgopenqaseleniumWebDriver;

import orgopenqaseleniumWebDriverBackedSelenium;

import orgopenqaseleniumWebElement;

import orgopenqaseleniumfirefoxFirefoxDriver;

import orgopenqaseleniuminternalWrapsDriver;

import orgopenqaseleniumsupportuiWait;

import orgopenqaseleniumsupportuiWebDriverWait;

import javaioIOException;

import static orgopenqaseleniumsupportuiExpectedConditionsvisibilityOfElementLocated;

@RunWith(BlockJUnit4ClassRunnerclass)

public class pickTest extends TestCase {

  protected static Selenium selenium;

  private static WebDriver driver;

  @Before

  public void createAndStartService() throws IOException {

      selenium = new WebDriverBackedSelenium(new FirefoxDriver(), "");

      driver = ((WrapsDriver) selenium)getWrappedDriver();

  }

  @After

  public void createAndStopService() {

      driverquit();

  }

  @Test

  public void should_open_google_page() throws InterruptedException {

      driverget(">

      <span style="color: #ff0000;">WebElement searchBox = driverfindElement(Byxpath("//[@id=\"lst-ib\"]"));</span>

      searchBoxsendKeys("selenium");

      WebElement searchButton = driverfindElement(Byxpath("//[@id=\"tsf\"]/div[2]/div[3]/center/input[1]"));

      searchButtonclick();

      <span style="color: #3366ff;">Wait<WebDriver> wait = new WebDriverWait(driver, 30);

      waituntil(visibilityOfElementLocated(Byxpath("//[@id=\"ab_name\"]/span")));</span>

  }

}

3 运行这个测试,你将看到firebox浏览器被自动启动,然后会自动的输入selenum并搜索。

这样,一个简单的自动化页面测试就完成了。有的朋友可能不太明白这段代码的含义。上面的代码中我标出了红色和蓝色两部分,我简单解释一下。Selenium是通过对浏览器的包装来进行页面处理的,因此我们首先会创建一个与浏览器相关的WebDriver对象。然后我们需要查找页面元素就是通过findeElement的方法和XPath的方式来获取页面对象(红色部分代码)。那么通常我们的一个点击 *** 作产生服务器相应,这里就需要一些时间。蓝色部分的代码就是创建一个等待对象,你可以通过XPath的方式来确定返回后页面上的哪个元素加载完了就认为页面加载完了,同时等待对象也有一个超时设置,这样即是服务器端一直不返回或出错。我们依然可以结束测试。如何更快的确定页面元素的XPath,如下:

PhantomJS 和 Chromedriver *** 作方式以及功能一致

主要区别 PhantomJS 无界面模式 节省内存

Chromedriver 完全模仿浏览器 消耗内存

PhantomJS 截取的是网页的完整页面,包括下拉进度条的内容

Chromedriver只截取d框浏览器的可视化内容页面

001 先找到文本输入框元素,输入内容

002 找到搜索按钮 进行搜索

给输入框赋值: elementsend_keys()

*** 作点击事件: elementclick()

find_element和find_elements的区别

带s的返回的是列表

不带s的是返回列表中的第一个元素

selenium处理cookie

页面等待 : >

实现代码如下:

1<html>

2 <head>

3 <title>selenium处理基本页面元素</title>

4 <style type="text/css">

5 table{font-size:26;text-align:center;width:80%;border-collapse:collapse;margin:auto}

6 table th{background: #aff}

7 display{color:red}

8 widgetStyle{text-align:left;padding-left:100px}

9 </style>

10 <script language= "javascript" type="text/javascript">

11 function clickbutton(flag)

一开始,基本上很多人都是用selenium IDE录制脚本开始的,我也是!有一本书写得很不错:selenium初学者指南!So,从录制回放开始我的selenium,而在这个过程中,不断地去补充我的html css知识,熟悉selenium的api!

慢慢地,发现录制的脚本在回放的时候经常报错,通过检查发现,是定位上的错误,导致这种定位的错误的最大原因是系统前端采用了某种框架,如tigerUI,exj所以HTML里面的标签很多都是动态的,比如id,class,name!这对selenium *** 作定位的元素而进行自动化来说是致命伤!

所以,开始自己写定位信息,这已经是必须的了!从而学习了xpth和css选择器,掌握了更加有效,快速和稳定地定位页面上的元素(定位的时候难免会碰到有iframe,这就得先切换到iframe中再进行定位了)!也就是,在selenium IDE上写脚本!

信心满满地在selenium IDE上写了长长地一段脚本,并且反复跑都能成功!总算尝到了一点点幸福的滋味!然后呢,问题来了,当我要修改和扩展这段的脚本的时候,才发现这效率是相当地低!一句句查!一句句改!多么痛的领悟!

另外,selenium IDE 默认启动的是火狐,在使用selenium RC 启动 IE 进行跑脚本时浏览器总是会报错!各种搞不定,各种不淡定!决定放弃使用IDE!

selenium有一个强大之处就是支持多种语方:java,C#,python等等,并且可以把录制的脚本转换成代码!我用的是java,果断走起!

不用说,当然是把脚本转为java代码了,在E >

以上就是关于从零开始学python爬虫(八):selenium提取数据和其他使用方法全部的内容,包括:从零开始学python爬虫(八):selenium提取数据和其他使用方法、如何利用selenium来进行自动化页面测试、Selenium和PhantomJS 终极最全使用总结等相关内容解答,如果想了解更多相关内容,可以关注我们,你们的支持是我们更新的动力!

欢迎分享,转载请注明来源:内存溢出

原文地址: https://outofmemory.cn/web/9700674.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2023-05-01
下一篇 2023-05-01

发表评论

登录后才能评论

评论列表(0条)

保存