小编Shu*_*ain的帖子

在Xpath中使用OR条件来标识相同的元素

我有这个逻辑,当前页面的标题首先点击下一个按钮,再次获取标题,如果两个标题相同,意味着导航没有移动到下一页,它再次点击下一步.

但是,我的问题是title元素的Xpath不同 - 相同的title元素有两个Xpath.一个是其他页面中的另一个页面.

就是这个,

(.//span[@class='g-title'])[2]
Run Code Online (Sandbox Code Playgroud)

要么

.//span[@class='g-title']
Run Code Online (Sandbox Code Playgroud)

那么,我该怎么处理呢?

selenium xpath selenium-webdriver

5
推荐指数
3
解决办法
3万
查看次数

Selenium-如何获取窗口中打开的选项卡数量?

我的测试用例:

  1. 打开浏览器并访问URL
  2. 单击主页上的链接->这将打开一个新窗口/新选项卡。
  3. 返回首页。
  4. 单击另一个链接。
  5. 确保新内容显示在步骤2中先前打开的子窗口/子选项卡上。

我可以通过获取窗口句柄数来检查打开的窗口数,并断言它等于2-以确保在单击第二个链接时,内容在同一子窗口上刷新,而不会打开另一个新窗口。

如果万一这些链接在新选项卡中打开,我如何检查此测试用例(第一次在首页上单击链接时打开了“新”选项卡。进一步单击主页上的任何链接时,将在同一新选项卡上刷新内容)?有没有一种方法可以计算窗口中的标签数?

还是硒强制将新选项卡作为新窗口打开?

java browser selenium window-handles selenium-webdriver

5
推荐指数
1
解决办法
8204
查看次数

无法使用 Appium 1.6 从 Spinner 中选择一个选项

我正在使用 Appium 1.6 来自动化 Android UI 测试。

在此图像中,我无法从微调器中选择任何国家/地区(例如:日本)。

截屏

这是我正在使用的代码:

driver.findElement(By.id("com.akkipet.android:id/country_spinner__add_information")).click();    
driver.findElement(MobileBy.AndroidUIAutomator("new UiScrollable(new UiSelector()).scrollIntoView("+ "new UiSelector().text(\"India\"));")).click()
Run Code Online (Sandbox Code Playgroud)

我究竟做错了什么?单击微调器后,虽然我无法读取国家/地区值,但我可以读取其他字段,例如名字、姓氏等。

现在,我正在使用点击功能在特定坐标处点击以选择所需的选项。但这将使其特定于设备。此外,由于选项列表因环境而异,我将不得不为每个环境提供一组不同的坐标。

点击代码:

touchAction.tap (200, 850).perform();
Run Code Online (Sandbox Code Playgroud)

有人可以提出更好的解决方法吗?

automated-tests android-testing selenium-webdriver appium android-uiautomator

5
推荐指数
1
解决办法
1130
查看次数

宝石冲突错误

由于冲突错误,我通过 RubyMine 运行的自动化测试失败。虽然它通过命令行运行完全正常。以下是错误:

Unable to activate aws-sdk-v1-1.67.0, because json-2.0.2 conflicts with json (~> 1.4) (Gem::ConflictError)
Run Code Online (Sandbox Code Playgroud)

我也是 ruby​​ 的新手,所以以下是宝石列表:

actioncable (5.1.4)
actionmailer (5.1.4)
actionpack (5.1.4)
actionview (5.1.4)
activejob (5.1.4)
activemodel (5.1.4)
activerecord (5.1.4)
activesupport (5.1.4)
addressable (2.5.2)
appium_lib (9.6.1)
arel (8.0.0)
ast (2.3.0)
avro (1.8.2, 1.7.7)
awesome_print (1.8.0)
aws-partitions (1.21.0)
aws-sdk (1.67.0)
aws-sdk-acm (1.0.0)
aws-sdk-apigateway (1.1.0)
aws-sdk-applicationautoscaling (1.3.0)
aws-sdk-applicationdiscoveryservice (1.0.0)
aws-sdk-appstream (1.0.0)
aws-sdk-athena (1.0.0)
aws-sdk-autoscaling (1.3.0)
aws-sdk-batch (1.1.0)
aws-sdk-budgets (1.1.0)
aws-sdk-clouddirectory (1.0.0)
aws-sdk-cloudformation (1.1.0)
aws-sdk-cloudfront (1.0.0)
aws-sdk-cloudhsm (1.1.0)
aws-sdk-cloudhsmv2 (1.0.0)
aws-sdk-cloudsearch …
Run Code Online (Sandbox Code Playgroud)

android rubygems ruby-on-rails bundler android-testing

5
推荐指数
0
解决办法
1143
查看次数

在Windows中为Docker获取Kitematic错误

我在Windows 10计算机上安装了docker。

我的泊坞窗在命令行上工作正常。

但是Kitematic无法正常工作并且抛出错误以下

GetMachineName,(默认)调用。DriverName,(默认)调用。GetCreateFlags,(默认)调用。SetConfigFromFlags,(默认)调用。PreCreateCheck,(默认)命令:C:\ Program Files \ Oracle \ VirtualBox \ VBoxManage.exe --version,(默认)DBG | STDOUT:,(默认)DBG | {,(默认)DBG | 5.2.6r120293,(默认)DBG | },(默认)DBG | STDERR:,(默认)DBG | {,(默认)DBG | },(默认)DBG | 命令:wmic计算机系统获取虚拟机监控程序存在,(默认)DBG | STDOUT:,(默认)DBG | {,(默认)DBG | HypervisorPresent,(默认)DBG | TRUE,(默认)DBG | ,(默认)DBG | },创建前检查错误:“此计算机正在运行Hyper-V。激活Hyper-V时,VirtualBox不会启动64位VM。使用Hyper-V作为驱动程序,或禁用Hyper-V管理程序。 (要跳过此检查,使用--virtualbox-no-vtx-check)”,打开C:\ Users \ ShubhamJain。docker\ machine \ machines \ default \ default \ Logs \ VBox.log:系统找不到指定的路径。,通知bugsnag: [创建前检查错误:“此计算机正在运行Hyper-V。激活Hyper-V后,VirtualBox不会启动64位VM。使用Hyper-V作为驱动程序,或禁用Hyper-V管理程序。(要跳过此检查,请使用--virtualbox-no-vtx-check)“],

我已经安装了docker工具和treid来使用它的Kitematic,但仍然收到此错误。

我试图重命名没有空间的docker工具文件夹并在.sh中设置相同的名称,但Kitematic仍然无法找到它。

我已经尝试了互联网上的许多选项,并且由于同样的原因,我的docker实际已损坏。我已经将其设置为出厂重置设置,然后它开始工作。

例:

https://jayvilalta.com/blog/2016/04/28/installing-docker-toolbox-on-windows-with-hyper-v-installed/

如果有人已经在窗口10中遇到此问题,请分享您的经验。

参考屏幕截图

在此处输入图片说明

任何解决方法都将有所帮助

docker boot2docker docker-machine kitematic docker-for-windows

5
推荐指数
1
解决办法
864
查看次数

什么是其余 API 方法 - COPY、HEAD、OPTIONS、LINK、UNLINK、PURGE、LOCK、UNLO​​CK、PROPFIND、VIEW

我正在深入研究 Rest API 方法。根据我的经验,我总是在项目中使用/看到四种方法,方法是 - GET、POST、PUT、DELETE

参考:

在此输入图像描述

我尝试理解这些方法,以下是我的理解

复制 - 这将复制资源,就像我想复制服务器上的对象或实体一样,我可以使用它。

HEAD - 此方法不返回主体并提供端点/资源的活动性

选项 - 此方法基本上显示当前端点允许使用哪种 API 方法,我们可以在 header -> ALLOW key 中看到这一点

LINK - 此方法将一个对象链接到另一个对象。基本上建立两个实体/对象之间的关系

UNLINK - 此方法取消一个对象与另一个对象的链接。删除对象之间的关系。

清除 - 没有线索

PROPFIND - 没有线索

查看 - 没有线索

如果我对上述方法的理解不正确,请纠正我,如果我遗漏了什么,请添加,并请解释 PURGE、PROPFIND 、 VIEW 等方法

api rest web-services

5
推荐指数
1
解决办法
2729
查看次数

给定的Geckodriver版本支持哪些Firefox浏览器版本?

我经常更新Firefox和Chrome浏览器,当前版本54.0.1 32位所以要使用哪个版本的Geckodriver.我试过两个版本Geckodriver-v0.18.0 and geckodriver-v0.16.1

为了将来参考,我在哪里可以找到支持的firefox浏览器列表以及各自的geckodriver版本

注意:启动浏览器中没有任何代码更改

以前的代码是使用geckodriver-v0.16.1为较旧的firefox版本现在在更新firefox 54.0.1和Geckodriver-v0.18.0后获得异常:

org.openqa.selenium.firefox.NotConnectedException:45000 ms后无法在端口7055上连接到主机127.0.0.1.Firefox控制台输出:oundUpdates":1,"bootstrap":false,"skinnable":false,"size":3242616,"sourceURI":null,"releaseNotesURI":null,"softDisabled":false,"foreignInstall":true "hasBinaryComponents":假 "strictCompatibility":假, "区域设置":[], "targetApplications":[{ "ID": "{ec8030f7-C20A-464f-9b0e-13a3a9e97384}", "MINVERSION":"1.5 ", "MAXVERSION": "9.9"}], "targetPlatforms":[], "multiprocessCompatible":假 "signedState":0, "看到":真 "依赖性":[], "hasEmbeddedWebExtension":假, "mpcOptedOut":假的, "userPermissions":空}

firefox selenium selenium-firefoxdriver selenium-webdriver geckodriver

4
推荐指数
2
解决办法
2万
查看次数

无法使用Selenium Webdriver在MAC上最大化Safari浏览器

我们正在使用Selenium和Java来自动化我们的Web应用程序.我们有工作代码在Windows操作系统上为三种浏览器(IE,Chrome,Firefox - 最新版本)运行自动化测试脚本.

我们已经要求在MAC操作系统上运行自动化测试脚本 - Safari浏览器.

环境细节:

MAC OS版本:macOS Sierra版本10.12.5

Safari浏览器版本:10.1.1(12603.2.4)

Selenium独立服务器版本:3.4.0

Java版本:1.8.0_112

已连接的MAC VM与VNC查看器(Sys管理团队为我们的测试提供了MAC VM).

在MAC上执行测试脚本时,下面的代码并没有最大化Safari浏览器,这对于Windows上的其他浏览器(IE,Chrome和Firefox)来说效果很好.由于这个原因,我们无法在应用程序上找到一些控件.

driver.manage().window().maximize();
Run Code Online (Sandbox Code Playgroud)

我们没有得到任何异常,代码正在执行但没有执行任何操作.

请帮助克服Safari浏览器最大化MAC问题.

真的,我认为我的问题已经解决了这个解决方案,尝试了代码来最大化Safari浏览器,但获得异常.

码:

 SafariOptions options = new SafariOptions();
options.setUseCleanSession(true);
driver = new SafariDriver(options);
JavascriptExecutor jse = (JavascriptExecutor)driver;
String screenWidth = jse.executeScript("return screen.availWidth").toString();
String screenHeight = jse.executeScript("return screen.availHeight").toString();
int intScreenWidth = Integer.parseInt(screenWidth);
int intScreenHeight = Integer.parseInt(screenHeight);
org.openqa.selenium.Dimension d = new org.openqa.selenium.Dimension(intScreenWidth, intScreenHeight);
driver.manage().window().setSize(d);
Run Code Online (Sandbox Code Playgroud)

例外:

2017年8月7日下午3:11:53 org.openqa.selenium.remote.ProtocolHandshake createSession INFO:检测到的方言:线程"main"中的OSS异常org.openqa.selenium.NoSuchWindowException:无法满足使用窗口的请求因为无法找到窗口.(警告:服务器未提供任何堆栈跟踪信息)命令持续时间或超时:27毫秒构建信息:版本:'3.4.0',修订版:'5234b32',时间:'2017-03-10 09:04:52 - 0800'系统信息:主持人:'Mac.local',ip:'fe80:0:0:0:4c6:11dc:3f91:11f8%en0',os.name:'Mac OS X',os.arch:' x86_64',os.version:'10 .12.6',java.version:'1.8.0_121'驱动程序信息:org.openqa.selenium.safari.SafariDriver Capabilities [{applicationCacheEnabled = …

java safari macos selenium webdriver

4
推荐指数
1
解决办法
2507
查看次数

获取selenium web元素标签的href值

我想获得标签链接的网址.我已经附加了元素的类,在python中键入selenium.webdriver.remote.webelement.WebElement:

elem = driver.find_elements_by_class_name("_5cq3")
Run Code Online (Sandbox Code Playgroud)

和HTML是:

<div class="_5cq3" data-ft="{&quot;tn&quot;:&quot;E&quot;}">
    <a class="_4-eo" href="/9gag/photos/a.109041001839.105995.21785951839/10153954245456840/?type=1" rel="theater" ajaxify="/9gag/photos/a.109041001839.105995.21785951839/10153954245456840/?type=1&amp;src=https%3A%2F%2Fscontent.xx.fbcdn.net%2Fhphotos-xfp1%2Ft31.0-8%2F11894571_10153954245456840_9038620401603938613_o.jpg&amp;smallsrc=https%3A%2F%2Fscontent.xx.fbcdn.net%2Fhphotos-prn2%2Fv%2Ft1.0-9%2F11903991_10153954245456840_9038620401603938613_n.jpg%3Foh%3D0c837ce6b0498cd833f83cfbaeb577e7%26oe%3D567D8819&amp;size=651%2C1000&amp;fbid=10153954245456840&amp;player_origin=profile" style="width:256px;">
        <div class="uiScaledImageContainer _4-ep" style="width:256px;height:394px;" id="u_jsonp_2_r">
            <img class="scaledImageFitWidth img" src="https://fbcdn-photos-h-a.akamaihd.net/hphotos-ak-prn2/v/t1.0-0/s526x395/11903991_10153954245456840_9038620401603938613_n.jpg?oh=15f59e964665efe28943d12bd00cefd9&amp;oe=5667BDBA&amp;__gda__=1448928574_a7c6da855842af4c152c2fdf8096e1ef" alt="9GAG's photo." width="256" height="395">
        </div>
    </a>
</div>
Run Code Online (Sandbox Code Playgroud)

我希望a标签的href值落在类中_5cq3.

python selenium xpath selenium-webdriver

3
推荐指数
1
解决办法
4603
查看次数

无法在jenkinsfile中设置环境变量

我想在我的Jenkins管道中设置一个名为"TEST_CONFIG_ROOT"的环境变量,我在这里举例说明:

https://jenkins.io/doc/book/pipeline/jenkinsfile/#working-with-the-environment

但是,当我执行我的测试时,似乎没有设置env变量,因为我的测试仍然抱怨它没有得到它应该从env得到的变量"TEST_CONFIG_ROOT"的值.

请参阅下面的jenkins文件:

node('node1'){


        def buildInput;

      echo 'Deploying my build'
     if(!params.buildName) {
         buildInput = input(
                 id: 'userInput', message: 'What is the build name?', parameters: [
                 [$class: 'StringParameterDefinition', defaultValue: 'abcd-1', description: 'Environment', name: 'buildName']
         ])
      }
      buildToUse = params.buildName ? params.buildName : buildInput;
      echo ("Env: "+buildToUse);



    if ( "${params.buildParam}" == 'prequal' || !params.buildParam ){
        stage('Prequal') {


        }
    }


    node('nodename'){

        if ( "${params.buildParam}" == 'test' || !params.buildParam ){
            withMaven(
                    maven: 'M2Slave',
                    mavenSettingsConfig: 'MavenSettingsXML',
                    mavenLocalRepo: '${HOME}/.m2/repository') {

                stage('Test') {
                    echo 'Testing my …
Run Code Online (Sandbox Code Playgroud)

environment-variables jenkins jenkins-pipeline

3
推荐指数
2
解决办法
1万
查看次数