使用selenium和python驱动web页面的基本力量。
WebElemental的Python项目详细描述
元素
硒的有益包装物
完整文档可在以下位置找到: 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_类
- 找不到断言
- 断言不可见
- 断言警报存在
- 在页面中断言文本
- 断言可见
- 断言页面中的文本
- 断言url
- 断言警告不存在
- 在元素中断言文本
- 在元素中断言文本
- 找到断言
- 断言元素包含文本
- 断言元素的值
- assert_element_not_has_类
找不到文件“changes”。