快速、简单、可靠的浏览器自动化和测试。
seleniumbase的Python项目详细描述
<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<
"relrelrelrelrelrelrelrelrelrelrelrelrelrelrelrelrelrelrelrelrelrelrelrelrelrelrelrelrelrelrelrelrelrelrelrelrelrelrelrelrelrelrelrelrelrelrelrelrelrelrelrelrelrelrelrelrelrelrelrelrelrelrelrelrelrelrelrelrelrelrelrelrelrelrelrelrelrelrelrelrelrelrelrelrelrelrelrelrelrelrelrelrelrelrelrelrelrelrelrel"56" src======="http://www/b494949984848484////1655555555555555555555555555555555555555555555555555555555555555555555555555555555555555999999999999999999999932888888888888888888888888888816765732F53425F4C6F676F34342E706E67" />
<<<<<<<
(以上:我的first test.py来自示例/在演示模式下运行,它为h添加了javascriptighlighting页面操作。)
Seleniumbase是一个一体化的测试自动化框架,它使用WebDriverAPI来旋转Web浏览器,同时使用Pytest或Nose测试来运行测试。
快速启动:
安装/升级pip
:
安装了python并在系统路径上,您可以使用:
python -m easy_install -U pip
设置虚拟环境:(可选)
您可能希望使用python虚拟环境来隔离项目之间的python依赖关系。(Seleniumbase Virtualenv教程可以在这里找到,官方Virtualenv教程可以在这里)
>安装<Seleniumbase硒硒的安装
<硒硒硒的安装。org/pypi/seleniumbase" rel="诺福尔ow">![pypi](https://warehouse camo.cmh1.psfhosted.org/8cbf1873cb1d82a3bcb9ca63715174d59d81694e/687470733a2f2f696d67656e736869656c647332e696f62616467652f7070692d73656c656e6956d62173652d32324141452e737667)
pip install seleniumbase
- 添加
--upgrade
以升级现有安装。 - 添加--强制重新安装以进行干净的安装。
您还可以从git克隆安装seleniumbase:
git clone https://github.com/seleniumbase/SeleniumBase.git
cd SeleniumBase
pip install -r requirements.txt
python setup.py develop
- "
pip install-e.
"也可以从顶级seleniumbase文件夹中使用。
您还可以安装seleniumbase的特定github分支:
pip install git+https://github.com/seleniumbase/SeleniumBase.git@master#egg=seleniumbase
下载Web驱动程序:
Seleniumbase可以使用install
命令将Web驱动程序下载到Seleniumbase/drivers文件夹:
seleniumbase install chromedriver
- 对于要在其上运行自动化的每个Web浏览器,您需要一个不同的Web驱动程序:
chrome driver
对于chrome,edgedriver
对于edge,geckodriver
对于firefox,operadriver
对于opera,iedriver
对于Internet Explorer。
在铬合金上运行测试:
cd examples pytest my_first_test.py --browser=chrome
- 如果未使用
--browser=browser指定chrome,则chrome是默认浏览器
- 在Linux上,缺省值是havior(运行时没有gui)。你也可以在任何操作系统上以无头模式运行。如果您的Linux机器有一个图形用户界面,并且您希望在运行测试时看到Web浏览器,请添加
--headed
或--gui
查看my_first_test.py查看简单测试的外观:
- 默认情况下,css选择器用于查找页面元素。
- 以下是一些常见的硒mbase测试方法:
self.open(URL)# Navigate to the web pageself.click(SELECTOR)# Click a page elementself.update_text(SELECTOR,TEXT)# Type text (Add "\n" to text for pressing enter/return.)self.assert_element(SELECTOR)# Assert element is visibleself.assert_text(TEXT)# Assert text is visible (has optional SELECTOR arg)self.assert_title(PAGE_TITLE)# Assert page titleself.assert_no_404_errors()# Assert no 404 errors from files on the pageself.assert_no_js_errors()# Assert no JavaScript errors on the page (Chrome-ONLY)self.execute_script(JAVASCRIPT)# Execute javascript codeself.go_back()# Navigate to the previous URLself.get_text(SELECTOR)# Get text from a selectorself.get_attribute(SELECTOR,ATTRIBUTE)# Get a specific attribute from a selectorself.is_element_visible(SELECTOR)# Find out if an element is visible on the pageself.is_text_visible(TEXT)# Find out if specific text is visible on the page (optional SELECTOR arg)self.hover_and_click(HOVER_SELECTOR,CLICK_SELECTOR)# Mouseover an element and click another elementself.select_option_by_text(DROPDOWN_SELECTOR,OPTION_TEXT)# Select a dropdown optionself.switch_to_frame(FRAME_NAME)# Switch webdriver control to an iframe on the pageself.switch_to_default_content()# Switch webdriver control out of the current iframeself.switch_to_window(WINDOW_NUMBER)# Switch to a different window/tabself.save_screenshot(FILE_NAME)# Save a screenshot of the current page
有关Seleniumbase方法的完整列表,请参见:help-docs/method\u summary.md
了解更多信息:
自动网络驱动能力:
Seleniumbase会自动处理常见的WebDriver操作,例如在测试失败时启动Web浏览器和保存屏幕截图。(阅读有关自定义测试运行的更多信息)
简化代码:
seleniumbase对命令使用简单的语法,例如:
self.update_text("textarea","text")
与常规webdriver相同的命令非常混乱:
pytest my_first_test.py --demo_mode0
(您仍然可以在代码中使用self.driver
)
在任何浏览器中使用pytest
或nose
运行测试:
(强烈建议使用pytest)
pytest my_first_test.py --demo_mode1
在python文件(或包含python文件的文件夹中)上使用pytest
或notests
时,将自动运行以test/code>开头的python方法。
不再进行片状测试:
seleniumbase方法在与页元素交互之前自动等待页元素完成加载(达到超时限制)。这意味着您不再需要脚本中的随机time.sleep()
语句。
自动/手动混合模式:
Seleniumbase包括一个名为masterqa的解决方案,它通过让自动化执行所有浏览器操作来加快手动测试,而手动测试仪则可以DLS验证。
功能丰富:
有关Seleniumbase功能的完整列表,请单击此处
详细说明:
以下是如何在各种Web浏览器上运行示例脚本:
首先,为要使用的每个Web浏览器安装一个Web驱动程序:
pytest my_first_test.py --demo_mode2
接下来,在pytest和nosetests测试跑步者之间进行选择。(基本上可以互换。)
pytest my_first_test.py --demo_mode3
(如果未指定浏览器,则默认使用Chrome。) 对于pytest,绿点表示测试通过。"F"表示测试失败。
如果示例测试的移动速度太快,您可以在命令行上添加--demo-mode
以演示模式运行它,该命令行在操作之间短暂暂停浏览器,突出显示正在操作的页面元素,并让您知道发生了什么测试断言。实时NG:
pytest my_first_test.py --demo_mode
pytest包括测试发现。如果未指定要从中运行的特定文件或文件夹,pytest
将根据以下匹配条件自动搜索所有子目录以运行测试:
python文件名,以test\u
开头或以\u test.py
结尾。
以test\u
开头的python方法。
python类名可以是任何东西,因为seleniumbase的basecase
类继承自unittest.testcase
类。
您可以使用:
pytest my_first_test.py --demo_mode5
您可以在脚本中使用以下内容来帮助您调试问题: (如果使用IPDB,请确保将"-s"添加到命令行选项,除非已经在pytest.ini中存在)
pytest my_first_test.py --demo_mode6
要暂停引发异常或错误的活动测试,请添加--pdb-s
:
pytest my_first_test.py --demo_mode7
如果出现故障,上面的代码将使浏览器窗口保持打开状态。(IPDB命令:"n"、"c"、"s"=>;下一步,继续,步骤)。
下面是pytest附带的一些其他有用的命令行选项:
pytest my_first_test.py --demo_mode8
seleniumbase为测试提供了其他pytest命令行选项:
pytest my_first_test.py --demo_mode9
(有关更多详细信息,请参见命令行选项的完整列表此处)
在测试失败期间,最近一次测试运行的日志和屏幕截图将保存到latest_logs/
文件夹中。如果您在命令行选项中添加--archive\u日志,或者在设置中将archive\u现有日志设置为true,则这些日志将移动到存档日志/
,否则将记录f在下一次测试运行开始时清理的文件。test_suite.py
集合包含故意失败的测试,以便您可以看到日志记录是如何工作的。
python -m easy_install -U pip0
覆盖seleniumbase/config/settings.py的一个简单方法是使用自定义设置文件。
下面是要添加到测试中的命令行选项:(请参见示例/custom\u settings.py)
--settings\u file=自定义设置.py
(设置包括默认超时值、双因素身份验证密钥、数据库凭据、S3凭据、电子邮件测试API凭据以及测试使用的其他重要设置。)
要将其他数据从命令行传递到测试,请添加--data="any string"
。
现在在您的测试中,您可以使用self.data
来访问它。
测试目录定制:>
要使用pytest在Seleniumbase repo之外运行测试,您需要根文件夹上的pytest.ini的副本。要使用notests在seleniumbase repo之外运行测试,您需要setup.cfg。(子文件夹应包含一个空白的\u init.py
文件。)
作为一个快捷方式,您可以运行seleniumbase mkdir[目录名]
来创建一个新文件夹,其中已经包含了必要的文件和一些可以运行的示例测试。例子:
python -m easy_install -U pip1
创建可视测试套件报告:< /H3>(注意:pytest和notests的几个命令行参数是不同的)
pytest报告:
使用--html=report.html
可以在您的测试套件完成后,为您提供一个指定名称的精美报告。
python -m easy_install -U pip
2
![src=]()
您还可以使用--junit xml=report.xml
来获取XML报表。詹金斯可以使用此文件显示更好的测试报告。
python -m easy_install -U pip
3
鼻部检查报告:
--html=report.html
可以在您的测试套件完成后,为您提供一个指定名称的精美报告。--junit xml=report.xml
来获取XML报表。詹金斯可以使用此文件显示更好的测试报告。--report
选项在您的测试套件完成后为您提供一个漂亮的报告。
python -m easy_install -U pip4
(注意:您可以添加--show_report
以在测试套件完成后立即显示notest报告。只在本地运行测试时使用--show_report
因为它会暂停测试运行。)
使用代理服务器:
如果您希望在浏览器测试中使用代理服务器(仅限Chrome和Firefox),可以在命令行中添加--proxy=IP_address:port
作为参数。
python -m easy_install -U pip5
如果要使用的代理服务器需要验证,可以执行以下操作(仅限Chrome):
python -m easy_install -U pip6
为了简化操作,您可以将常用的代理添加到代理列表中,地址是:port那把钥匙的。
python -m easy_install -U pip7
更改用户代理:
如果要更改浏览器测试的用户代理(仅限Chrome和Firefox),可以在命令行中添加--agent="user agent string"
作为参数。
python -m easy_install -U pip8
网站导游:了解(在examples/tour-examples
文件夹中)有关seleniumbase交互式演练的信息。这是一个伟大的原型网站登入经验。请参见"https://github.com/seleniumbase/seleniumbase/blob/master/examples/tour-examples/readme.md" rel="nofollow">教程自述了解更多详细信息。
生产环境和集成:
以下是为测试设置生产环境时可以执行的一些操作:
您可以设置ajenkins生成服务器,以便定期运行测试。Jenkins有许多可用的插件,如xvfb headless browser插件,用于在没有图形用户界面的机器上运行测试。如果xvfb在后台运行,则可以将--headless
添加到run命令中,以便利用它。有关xvfb插件的更多信息,请阅读本文。对于一个实际的jenkins无头浏览器自动化示例,请查看seleniumbase google cloud readme
您可以使用SeleniumHq/selenium/wiki/grid2 rel="nofollow">Selenium网格通过在多台具有并行执行的计算机上分发测试来缩放测试。为此,请查看Seleniumbase文件夹,该文件夹应包含您需要的所有内容。Selenium网格自述文件将帮助您入门。
如果您使用seleniumbase mysql功能保存在服务器计算机上运行的测试结果,则可以安装mysql工作台来帮助您重新获得从数据库中更轻松地编写数据。有关详细信息,请参见stackoverflowstackoverflow。
如果使用slack,您可以通过使用jenkins slack plugin轻松显示jenkins作业的结果。从您的测试向slack发送消息的另一种方法是使用slack的传入webhooks api。
- 如果您使用的是aws,您可以设置一个amazon s3帐户,用于保存日志文件和屏幕截图以备将来查看。Seleniumbase已经有了连接到S3所需的所有代码。您需要修改settings.py,其中包含到您的实例的连接详细信息以及您希望在s3中保存日志文件的位置。运行测试时,还需要在命令行中添加"
--with-s3"日志记录
。
下面是启用其他功能运行测试的示例:
python -m easy_install -U pip
9
(注意:如果您没有配置mysql或3个连接位于设置中。py,不要使用--with-db\u reporting
或--with-s3\u logging
)
使用testing_base插件时,如果测试失败,basic_test_info插件会记录测试日志,page_source插件会记录测试所看到的最后一个web页面的page source,screen_shots插件会记录测试所看到的最后一个页面出现故障的图像。确保每次包含记录测试数据的插件时都包含testing_base。db_reporting插件记录mysql数据库中运行的所有测试的状态。S3_日志插件将基本测试信息、屏幕截图和页面源上传到S3存储文件夹中。
为了简化这个长时间运行的命令,您可以创建一个*.cfg
文件,例如示例中提供的文件,并在其中输入您的插件,这样您就可以通过键入:
pip install seleniumbase
0
通过使用setup.cfg文件(如examples文件夹中为您提供的文件),可以进一步简化这一过程。如果您从setup.cfg所在的文件夹中启动测试运行,该文件将自动用作您的配置,这意味着您不必每次运行测试时都键入要使用的所有插件(或包括配置文件)。
如果告诉pytest/nosetests运行整个文件,它将运行该python文件中以"test"开头的每个方法。您可以通过执行以下操作来更具体地了解运行什么:(请注意,pytest和nosetests的语法是不同的。)
pip install seleniumbase
1
让我们尝试一个失败的测试示例:
pip install seleniumbase
2
您可以从examples
文件夹运行它,如下所示:
pip install seleniumbase
3
您会注意到,创建了一个日志文件夹"最新日志",用于保存有关失败测试的信息和屏幕截图。看看你得到了什么。记住,如果在run命令中包含了必要的插件(并且正确设置了必要的连接),那么这些数据可以保存在mysql数据库和s3中。对于将来的测试运行,如果您在settings.py中将现有的存档日志设置为true,则以前的测试结果将存储在存档的日志文件夹中。
![](https://warehouse camo.cmh1.psfhosted.org/5f58bde3b4ca7d4a779772e7085fffc2fda93dc30/68747470733a2f2f63646e322e688756273706f742e6e657442f68756266732f3130303062f696d616765732f6c6f5626173655f3462e706e67)
详细的方法规范和示例:
导航到网页(和相关命令)
pip install seleniumbase
4
protip™:您可能需要使用get_page_source()方法和python的find()命令来解析源代码,以找到selenium无法找到的内容。(为此,您可能需要提高python编程技能。)
EX:
pip install seleniumbase
5
单击
单击页面上的元素:
pip install seleniumbase
6
protip™:在大多数Web浏览器中,您可以右键单击页面并选择inspect element
以查看创建自己的脚本所需的CSS选择器详细信息。
键入文本
self.update_text(selector,text)使用指定值更新来自指定元素的文本。如果元素丢失或文本字段不可编辑,则会引发异常。例子:
pip install seleniumbase
7
您也可以使用self.add_tex t()或webdriver.send_keys()命令,但这些命令不会清除tex如果里面已经有文本,请先用T框。
如果你想输入特殊的键,那也很简单。下面是一个示例:
pip install seleniumbase
8
从页面上的元素获取文本
pip install seleniumbase
9
从页面上的元素获取属性值
git clone https://github.com/seleniumbase/SeleniumBase.git
cd SeleniumBase
pip install -r requirements.txt
python setup.py develop
0
在几秒钟内断言页面上某个元素的存在:
git clone https://github.com/seleniumbase/SeleniumBase.git
cd SeleniumBase
pip install -r requirements.txt
python setup.py develop
1
(注意:您也可以使用:self.assert_element_present(element)
)
在几秒钟内断言页面上元素的可见性:
git clone https://github.com/seleniumbase/SeleniumBase.git
cd SeleniumBase
pip install -r requirements.txt
python setup.py develop
2
(注意:它的简短版本是self.find_element(element)
和self.assert_element(element)
。find_element()版本返回元素)
由于上面的行返回元素,您可以将其与.click()组合,如下所示:
git clone https://github.com/seleniumbase/SeleniumBase.git
cd SeleniumBase
pip install -r requirements.txt
python setup.py develop
3
protip™:您可以使用点来表示类名(例如:div.class_name
),它是css选择器中的简化版div[class="class_name"]
。
您还可以使用*=
在css选择器中搜索任何部分值,如下所示:
git clone https://github.com/seleniumbase/SeleniumBase.git
cd SeleniumBase
pip install -r requirements.txt
python setup.py develop
4
在几秒钟内断言页面元素中文本的可见性:
git clone https://github.com/seleniumbase/SeleniumBase.git
cd SeleniumBase
pip install -r requirements.txt
python setup.py develop
5
(注意:self.查找文本(文本,元素)
和self.等待文本(文本,元素)
也执行此操作。为了与背景词兼容,保留了较旧的方法名,但默认超时可能不同。)
断言任何内容
git clone https://github.com/seleniumbase/SeleniumBase.git
cd SeleniumBase
pip install -r requirements.txt
python setup.py develop
6
有用的条件语句(有创造性的例子在起作用)
元素是否可见(选择器)是页面上可见的元素
git clone https://github.com/seleniumbase/SeleniumBase.git
cd SeleniumBase
pip install -r requirements.txt
python setup.py develop
7
元素是否存在(选择器)是页面上存在的元素
git clone https://github.com/seleniumbase/SeleniumBase.git
cd SeleniumBase
pip install -r requirements.txt
python setup.py develop
8
另一个例子:
git clone https://github.com/seleniumbase/SeleniumBase.git
cd SeleniumBase
pip install -r requirements.txt
python setup.py develop
9
文本是否可见(文本,选择器)文本是否在页面上可见
pip install git+https://github.com/seleniumbase/SeleniumBase.git@master#egg=seleniumbase
0
切换选项卡
如果您的测试打开了一个新的选项卡/窗口,而现在您有多个页面呢?没问题。您需要指定当前要使用的selenium。在选项卡/窗口之间切换很容易:
EX:
pip install git+https://github.com/seleniumbase/SeleniumBase.git@master#egg=seleniumbase
1
protip™:iframe遵循与新窗口相同的原则-如果要对其中的某些内容执行操作,则需要指定iframe
EX:
pip install git+https://github.com/seleniumbase/SeleniumBase.git@master#egg=seleniumbase
2
处理弹出警报
如果你的测试在你的浏览器中弹出一个警告呢?没问题。你需要切换到它,要么接受它,要么放弃它:
EX:
pip install git+https://github.com/seleniumbase/SeleniumBase.git@master#egg=seleniumbase
3
如果在尝试接受或解除警报之前不确定是否存在警报,一种处理方法是将警报处理代码包装在try/except块中。其他方法,如.text和.send_keys()也可用于警报。
执行自定义jquery脚本:
jquery是一个强大的javascript库,允许您在web浏览器中执行高级操作。
如果您所在的网页已加载jquery,则可以立即开始执行jquery脚本。
你会知道这一点,因为网页在html中会包含如下内容:
pip install git+https://github.com/seleniumbase/SeleniumBase.git@master#egg=seleniumbase
4
如果您想在一个还没有加载jquery的页面上使用jquery,这是可以的。为此,请先运行以下命令:
pip install git+https://github.com/seleniumbase/SeleniumBase.git@master#egg=seleniumbase
5
有些网站有限制性的内容安全策略,以防止用户将jquery和其他外部库加载到网站上。如果您需要在这样的网站上使用jquery或其他js库,请在命令行中添加--disable-csp
。
下面是在脚本中使用jquery的一些示例:
pip install git+https://github.com/seleniumbase/SeleniumBase.git@master#egg=seleniumbase
6
在下面的示例中,javascript用于在页面上放置代码,然后selenium可以在该页面上进行触摸:
pip install git+https://github.com/seleniumbase/SeleniumBase.git@master#egg=seleniumbase
7
(由于流行的需求,这个流量生成示例已经用self.generate_referration(起始页,结束页)
和self.generate_traffic(起始页,结束页,循环)
方法烘焙到Seleniumbase中。
使用延迟asserTS:< >
假设您希望在单个测试中验证网页上的多个不同元素,但在同时验证多个元素之前,您不希望测试失败,这样您就不必重新运行测试以在同一页上找到更多缺少的元素。这就是延迟索赔的原因。下面是示例:
pip install git+https://github.com/seleniumbase/SeleniumBase.git@master#egg=seleniumbase
8
delayed_assert_element()
和delayed_assert_text()
将保存将引发的任何异常。
要将所有失败的延迟断言刷新为单个异常,请确保在测试方法结束时调用self.process_delayed_asserts()
。如果测试命中多个页面,则可以在一个页面的所有延迟断言结束时调用self.process_delayed_asserts()
。这样,日志文件中的屏幕截图将显示延迟断言的生成位置。
访问原始webdriver
如果您需要访问标准webdriver附带的任何命令,可以这样直接调用它们:
pip install git+https://github.com/seleniumbase/SeleniumBase.git@master#egg=seleniumbase
9
(通常,如果可用,您将希望使用Seleniumbase版本的方法。)
自动重试失败的测试
您可以使用--reruns num
多次重试失败的测试。使用--reruns delay seconds
在两次重试之间等待多秒。例子:
seleniumbase install chromedriver
0
此外,您可以使用@retry_on_exception()
decorator来专门重试失败的方法。(第一次导入:从Seleniumbase导入装饰符)若要了解有关Seleniumbase装饰符的详细信息,请单击此处
电子邮件测试/检查电子邮件:
假设您有一个发送电子邮件的测试,现在您要检查电子邮件是否已收到:
seleniumbase install chromedriver
1
现在,如果要查找特定文本或导航到其中列出的链接,您可以通过电子邮件进行分析。
总结
恭喜你开始使用硒软糖!
examples/tour-examples
文件夹中)有关seleniumbase交互式演练的信息。这是一个伟大的原型网站登入经验。请参见"https://github.com/seleniumbase/seleniumbase/blob/master/examples/tour-examples/readme.md" rel="nofollow">教程自述了解更多详细信息。您可以设置ajenkins生成服务器,以便定期运行测试。Jenkins有许多可用的插件,如xvfb headless browser插件,用于在没有图形用户界面的机器上运行测试。如果xvfb在后台运行,则可以将--headless
添加到run命令中,以便利用它。有关xvfb插件的更多信息,请阅读本文。对于一个实际的jenkins无头浏览器自动化示例,请查看seleniumbase google cloud readme
您可以使用SeleniumHq/selenium/wiki/grid2 rel="nofollow">Selenium网格通过在多台具有并行执行的计算机上分发测试来缩放测试。为此,请查看Seleniumbase文件夹,该文件夹应包含您需要的所有内容。Selenium网格自述文件将帮助您入门。
如果您使用seleniumbase mysql功能保存在服务器计算机上运行的测试结果,则可以安装mysql工作台来帮助您重新获得从数据库中更轻松地编写数据。有关详细信息,请参见stackoverflowstackoverflow。
如果使用slack,您可以通过使用jenkins slack plugin轻松显示jenkins作业的结果。从您的测试向slack发送消息的另一种方法是使用slack的传入webhooks api。
--with-s3"日志记录
。--with-db\u reporting
或--with-s3\u logging
)*.cfg
文件,例如示例中提供的文件,并在其中输入您的插件,这样您就可以通过键入:examples
文件夹运行它,如下所示:
详细的方法规范和示例:
导航到网页(和相关命令)
pip install seleniumbase4
protip™:您可能需要使用get_page_source()方法和python的find()命令来解析源代码,以找到selenium无法找到的内容。(为此,您可能需要提高python编程技能。) EX:
pip install seleniumbase5
单击
单击页面上的元素:
pip install seleniumbase6
protip™:在大多数Web浏览器中,您可以右键单击页面并选择inspect element
以查看创建自己的脚本所需的CSS选择器详细信息。
键入文本
self.update_text(selector,text)使用指定值更新来自指定元素的文本。如果元素丢失或文本字段不可编辑,则会引发异常。例子:
pip install seleniumbase7
您也可以使用self.add_tex t()或webdriver.send_keys()命令,但这些命令不会清除tex如果里面已经有文本,请先用T框。 如果你想输入特殊的键,那也很简单。下面是一个示例:
pip install seleniumbase8
从页面上的元素获取文本
pip install seleniumbase9
从页面上的元素获取属性值
git clone https://github.com/seleniumbase/SeleniumBase.git
cd SeleniumBase
pip install -r requirements.txt
python setup.py develop
0
在几秒钟内断言页面上某个元素的存在:
git clone https://github.com/seleniumbase/SeleniumBase.git
cd SeleniumBase
pip install -r requirements.txt
python setup.py develop
1
(注意:您也可以使用:self.assert_element_present(element)
)
在几秒钟内断言页面上元素的可见性:
git clone https://github.com/seleniumbase/SeleniumBase.git
cd SeleniumBase
pip install -r requirements.txt
python setup.py develop
2
(注意:它的简短版本是self.find_element(element)
和self.assert_element(element)
。find_element()版本返回元素)
由于上面的行返回元素,您可以将其与.click()组合,如下所示:
git clone https://github.com/seleniumbase/SeleniumBase.git
cd SeleniumBase
pip install -r requirements.txt
python setup.py develop
3
protip™:您可以使用点来表示类名(例如:div.class_name
),它是css选择器中的简化版div[class="class_name"]
。
您还可以使用*=
在css选择器中搜索任何部分值,如下所示:
git clone https://github.com/seleniumbase/SeleniumBase.git
cd SeleniumBase
pip install -r requirements.txt
python setup.py develop
4
在几秒钟内断言页面元素中文本的可见性:
git clone https://github.com/seleniumbase/SeleniumBase.git
cd SeleniumBase
pip install -r requirements.txt
python setup.py develop
5
(注意:self.查找文本(文本,元素)
和self.等待文本(文本,元素)
也执行此操作。为了与背景词兼容,保留了较旧的方法名,但默认超时可能不同。)
断言任何内容
git clone https://github.com/seleniumbase/SeleniumBase.git
cd SeleniumBase
pip install -r requirements.txt
python setup.py develop
6
有用的条件语句(有创造性的例子在起作用)
元素是否可见(选择器)是页面上可见的元素
git clone https://github.com/seleniumbase/SeleniumBase.git
cd SeleniumBase
pip install -r requirements.txt
python setup.py develop
7
元素是否存在(选择器)是页面上存在的元素
git clone https://github.com/seleniumbase/SeleniumBase.git
cd SeleniumBase
pip install -r requirements.txt
python setup.py develop
8
另一个例子:
git clone https://github.com/seleniumbase/SeleniumBase.git
cd SeleniumBase
pip install -r requirements.txt
python setup.py develop
9
文本是否可见(文本,选择器)文本是否在页面上可见
pip install git+https://github.com/seleniumbase/SeleniumBase.git@master#egg=seleniumbase
0
切换选项卡
如果您的测试打开了一个新的选项卡/窗口,而现在您有多个页面呢?没问题。您需要指定当前要使用的selenium。在选项卡/窗口之间切换很容易: EX:
pip install git+https://github.com/seleniumbase/SeleniumBase.git@master#egg=seleniumbase
1
protip™:iframe遵循与新窗口相同的原则-如果要对其中的某些内容执行操作,则需要指定iframe EX:
pip install git+https://github.com/seleniumbase/SeleniumBase.git@master#egg=seleniumbase
2
处理弹出警报
如果你的测试在你的浏览器中弹出一个警告呢?没问题。你需要切换到它,要么接受它,要么放弃它: EX:
pip install git+https://github.com/seleniumbase/SeleniumBase.git@master#egg=seleniumbase
3
如果在尝试接受或解除警报之前不确定是否存在警报,一种处理方法是将警报处理代码包装在try/except块中。其他方法,如.text和.send_keys()也可用于警报。
执行自定义jquery脚本:
jquery是一个强大的javascript库,允许您在web浏览器中执行高级操作。 如果您所在的网页已加载jquery,则可以立即开始执行jquery脚本。 你会知道这一点,因为网页在html中会包含如下内容:
pip install git+https://github.com/seleniumbase/SeleniumBase.git@master#egg=seleniumbase
4
如果您想在一个还没有加载jquery的页面上使用jquery,这是可以的。为此,请先运行以下命令:
pip install git+https://github.com/seleniumbase/SeleniumBase.git@master#egg=seleniumbase
5
有些网站有限制性的内容安全策略,以防止用户将jquery和其他外部库加载到网站上。如果您需要在这样的网站上使用jquery或其他js库,请在命令行中添加--disable-csp
。
下面是在脚本中使用jquery的一些示例:
pip install git+https://github.com/seleniumbase/SeleniumBase.git@master#egg=seleniumbase
6
在下面的示例中,javascript用于在页面上放置代码,然后selenium可以在该页面上进行触摸:
pip install git+https://github.com/seleniumbase/SeleniumBase.git@master#egg=seleniumbase
7
(由于流行的需求,这个流量生成示例已经用self.generate_referration(起始页,结束页)
和self.generate_traffic(起始页,结束页,循环)
方法烘焙到Seleniumbase中。
使用延迟asserTS:< >
假设您希望在单个测试中验证网页上的多个不同元素,但在同时验证多个元素之前,您不希望测试失败,这样您就不必重新运行测试以在同一页上找到更多缺少的元素。这就是延迟索赔的原因。下面是示例:
pip install git+https://github.com/seleniumbase/SeleniumBase.git@master#egg=seleniumbase
8
delayed_assert_element()
和delayed_assert_text()
将保存将引发的任何异常。
要将所有失败的延迟断言刷新为单个异常,请确保在测试方法结束时调用self.process_delayed_asserts()
。如果测试命中多个页面,则可以在一个页面的所有延迟断言结束时调用self.process_delayed_asserts()
。这样,日志文件中的屏幕截图将显示延迟断言的生成位置。
访问原始webdriver
如果您需要访问标准webdriver附带的任何命令,可以这样直接调用它们:
pip install git+https://github.com/seleniumbase/SeleniumBase.git@master#egg=seleniumbase
9
(通常,如果可用,您将希望使用Seleniumbase版本的方法。)
自动重试失败的测试
您可以使用--reruns num
多次重试失败的测试。使用--reruns delay seconds
在两次重试之间等待多秒。例子:
seleniumbase install chromedriver0
此外,您可以使用@retry_on_exception()
decorator来专门重试失败的方法。(第一次导入:从Seleniumbase导入装饰符)若要了解有关Seleniumbase装饰符的详细信息,请单击此处
电子邮件测试/检查电子邮件:
假设您有一个发送电子邮件的测试,现在您要检查电子邮件是否已收到:
seleniumbase install chromedriver1
现在,如果要查找特定文本或导航到其中列出的链接,您可以通过电子邮件进行分析。