使用selenium和python驱动web页面的基本力量。

WebElemental的Python项目详细描述


元素

硒的有益包装物

Build Status

完整文档可在以下位置找到: https://smeggingsmegger.github.io/WebElemental

您可以使用elemental来创建网站、自动化web任务,或者 任何你能想象的它易于初始化和使用。是的 也与 BrowserStack使用 该页上的命令执行器和远程功能示例。 请注意,您需要订阅、用户名和API密钥 让它工作。

fromWebElementalimportElemental# Running headless FireFox is the default.elemental=Elemental()# Defaults to xvfb=True, driver=FireFox# If xvfb is not installed, it will be bypassed automatically.# If you explicitly don't want headless operation:elemental=Elemental(xvfb=False)

一旦我们初始化了elemental,我们仍然需要启动浏览器。 我已经做了一个手动步骤,这样就容易启动和停止 如果需要,不同的浏览器使用相同的基本实例。

# Start your engines...elemental.start()# DO SOME STUFFelemental.stop()

假设你想在firefox中做一些事情,然后切换到 铬。你可以这样做:

elemental=Elemental()elemental.start()# Do things...elemental.stop()# Change the browser. This is accomplished by setting the property directly at present.elemental.browser="Chrome"# You could also choose to run headlessly if you wanted:elemental.xvfb=Trueelemental.start()# Do things in Chrome now.elemental.stop()

元素类的主要用途是它能够缩短许多 您需要自动化交互的最常见任务 有一个网页。

其中最关键的是打开一个网页。

elemental.go('http://someaddress.here/page.html')

一旦我们打开了一个页面,我们就可以以各种方式与之交互。这个 这个类中的方法有很好的文档记录,因此可以充分地解释它们 不在本指南的范围内。我强烈建议你 看看所有方法的docstrings,然后自己看看如何 与他们互动。

下面是Elemental中可用方法的列表,并给出了基本解释 关于他们的工作:

浏览器控件:

  • 开始
  • 停止
  • 刷新页面
  • 向前
  • 后退
  • 前进
  • 当前url
  • js公司

滚动

  • 滚动浏览

其它

  • 获取页面源
  • 截图
  • 保存页面源

等待

  • 等待url
  • 等待标题
  • 等待js

查找

  • 文本是否在页面上

元素方法

滚动

  • 滚动到元素

选择
  • 查找元素
  • 查找元素
  • 获取元素
  • 获取元素
  • 获取文本
  • 获取u值
  • 获取文本

等待

  • 等待
  • 等待可见
  • 等着看不见
  • 等着看不见
  • 等待可点击的按钮
  • 等待所选内容
  • 等待出现
  • 等待透明度
  • 等待文本
  • 在值中等待文本
  • 等待u值
  • 等ú子

相互作用

  • 点击
  • 全部单击
  • 悬停
  • 发送密钥
  • 清除

表格

  • 填充
  • 填写表格
  • 设置值
  • 设置选择
  • 设置按值选择
  • 设置按文本选择
print(elemental.current_url())# outputs 'http://someaddress.here/page.html'elemental.click('#some-button')# Clicks a button.elemental.js('console.log("I am executing JS on the page!");')elem=elemental.find_element('#my-id')# Returns a selenium element objectelems=elemental.find_elements('.some-class')# Returns a list of selenium element objectsform_data={'#username':'person','#password':'somepass'}elemental.fill(form_data)# Fills a form. Takes a dict of CSS keys and values.elemental.screenshot('/tmp/screenshot1.png')

BrowserStack示例:

fromWebElementalimportElementaldesired={'browser':'Edge','browser_version':'13.0','os':'Windows','os_version':'10','resolution':'1440x900'}elemental=Elemental(desired_capabilities=desired,command_executor='http://USERNAME:API_KEY@hub.browserstack.com:80/wd/hub',driver='Remote')elemental.start()elemental.go('http://google.com')elemental.set_value('#lst-ib','WebElemental')

如您所见,几乎没有理由与 直接使用selenium浏览器对象这是故意的。如果你发现 你需要,这意味着你发现了 本实用程序的初始设计出乎意料。

如果你在读这个,你是一个程序员,所以如果你 做了你需要的方法,并发送了一个公关。更多的人使用和 开发这个框架,它会变得更好

所以即使我不推荐使用它,你仍然可以访问 selenium浏览器对象

elemental.browser.find_elements_by_id('#some-id')# Use elemental.find_element instead.

试验对象

TestElemental继承了Elemental,因此它拥有所有相同的方法 elemental有,但它添加了一些额外的方法,这些方法对于 测试。

助手

  • 转到
  • 等待

测试断言

  • assert_element_has_类
  • 找不到断言
  • 断言不可见
  • AsjtType存在
  • 断言警报存在
  • 在页面中断言文本
  • 断言可见
  • 断言页面中的文本
  • 断言url
  • 断言警告不存在
  • 在元素中断言文本
  • 在元素中断言文本
  • 找到断言
  • 断言元素包含文本
  • 断言元素的值
  • assert_element_not_has_类

找不到文件“changes”。

欢迎加入QQ群-->: 979659372 Python中文网_新手群

推荐PyPI第三方库


热门话题
java调用Python函数作为TEID中的UDF   java Android。支持v4导入不工作   java如何影响具有静态属性的类   java如何在从glTexImage2D()分配后编辑纹理的像素颜色   javaspringboot+rediscache+@Cacheable适用于某些方法,而不适用于其他方法   java无法将动态Web模块方面从3.0更改为2.5   java如何在新选项卡中显示打印的文档?   java Google Cloud Endpoints API方法仅在删除用户参数时成功调用   java为什么我可以使用Stack<Double>但不能使用Stack<Double>?   java JDBC PreparedStatement似乎忽略了占位符   java如何设置JInternalFrame的标准图标化位置?   Java文件。copy()不复制文件   基于另一个类的java显示arraylist?   java Android Studio:错误:非法字符:'\u2028'   对象(Java)无法实例化类型映像?   javascript错误:飞行前响应的HTTP状态代码401无效   java确保泛型vararg参数具有相同的类型