小编Tes*_*tor的帖子

如何使用Selenium WebDriver验证元素中是否存在属性?

我的屏幕上有很多单选按钮.选择单选按钮时,它具有已检查的属性.未选择单选按钮时,不存在checked属性.我想创建一个方法,如果元素不存在将通过.

我正在使用selenium webdriver和java.我知道我可以通过使用来检索属性getSingleElement(XXX).getAttribute(XXX).我只是不确定如何验证属性不存在,以及测试在不存在时传递(如果确实存在则失败).

选中单选按钮时

<input id="ctl00_cphMainContent_ctl00_iq1_response_0" type="radio" name="ctl00$cphMainContent$ctl00$iq1$response" value="1" checked="checked"> 
Run Code Online (Sandbox Code Playgroud)

未选中单选按钮时

<input id="ctl00_cphMainContent_ctl00_iq1_response_0" type="radio" name="ctl00$cphMainContent$ctl00$iq1$response" value="1">
Run Code Online (Sandbox Code Playgroud)

我希望在checked属性不存在时传递测试

java selenium webdriver selenium-webdriver

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

Cypress ignoreTestFiles 不会忽略测试

我试图在 cypress 中使用 ignoreTestFiles 以便不完整的测试不会在测试套件中运行。

我的测试路径是

C:\Users\userA\IdeaProjects\automated_tests\cypress\integration\ignoredTestFiles
Run Code Online (Sandbox Code Playgroud)

在 cypress.json 中,我有以下条目

"ignoreTestFiles": "*ignoredTestFiles*"
Run Code Online (Sandbox Code Playgroud)

我使用 Globster 来验证 minimatch,它说它是正确的。但是当我运行测试时,这些文件并没有被忽略。

minimatch cypress

8
推荐指数
3
解决办法
3291
查看次数

在 Cypress 中设置本地存储

对于我们的一个应用程序,我需要设置本地存储以绕过登录页面过程。

我有以下函数将返回我需要设置的 accessToken。此功能在节点中运行时有效。

async function getAccessToken(email, pwd) {
    const form = {email: email, password: pwd};
    let config = {
        headers: {
            'Content-Type': 'application/x-www-form-urlencoded; charset=UTF-8',
        }
    };
    const accessToken = await axios.post(`${process.env.API_URL}/loginWithToken`, qs.stringify(form), config);
    console.log(accessToken.data.accessToken);
    return accessToken.data.accessToken
}
Run Code Online (Sandbox Code Playgroud)

我正在尝试创建一个 cypress 命令来设置本地存储,然后访问该应用程序。运行时,我收到一个错误,我从命令返回了一个承诺,同时还调用了该承诺中的一个或多个 cy 命令。

Cypress.Commands.add("logInAs", async(Useremail, Userpwd, TMURL) => {
    var accessToken = cy.task('getAccessToken', {email: Useremail, pwd: Userpwd
    }).then(Visit =>{
        window.localStorage.setItem("accessToken", accessToken);
        window.localStorage.setItem("refreshToken", accessToken);
        cy.visit(`${process.env.TM_API_URL}/`+TMURL+``);
    });
});
Run Code Online (Sandbox Code Playgroud)

我还尝试了以下 cypress 命令

require('dotenv').config();

Cypress.Commands.add('logInAs3', (Useremail, Userpwd, TMURL) => {
        cy.request({
            method: 'POST',
            url: `${process.env.API_URL}/loginWithToken`, …
Run Code Online (Sandbox Code Playgroud)

javascript node.js cypress

6
推荐指数
2
解决办法
9436
查看次数

Selenium - 无法发现铬合金的开窗

我正在尝试使用chrome运行测试,但是当浏览器启动测试失败时,我看到以下错误.

org.openqa.selenium.WebDriverException:未知错误:无法在chrome中发现打开的窗口

我使用的是最新版本的selenium和chrome驱动程序

  • Webdriver - 2.46
  • Chrome驱动程序 - 2.16
  • Chrome浏览器 - 43

仅在本地计算机上运行测试时才会出现此错误.如果我在网格VM上运行这些测试,Chrome将打开而没有任何问题,测试将运行.网格VM和我的本地计算机具有完全相同的chrome,chrome驱动程序和webdriver版本.

我可以在本地计算机上查找什么来解决此问题?我试图重新安装chrome,但这没有帮助. 在此输入图像描述

selenium google-chrome

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

Cypress - 使用 Azure AD 帐户进行 SSO

是否有适用于 cypress 和 Azure AD 单点登录的解决方案?Azure AD 似乎没有可以使用登录名/密码调用来登录用户的 API。为此输入了一个未决问题。

Microsoft Azure Cypress Github 问题

我尝试过使用这个puppeteer解决方案,但我遇到了与其他人相同的问题。一旦我使用 Cypress 导航到我的页面,我就会被重定向回登录页面。

puppeteer cypress

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

Webdriver - 等待元素的文本更改

我为应用程序中的元素创建了一个对象。此元素是显示在屏幕上的记录的文本。所以在第一页上,它会说“显示 1-10 of 2100”

public static final String VTeam_M_Detail_VRecordsText = "css=#UserList:last-of-type > div:last-child";
Run Code Online (Sandbox Code Playgroud)

当我更改页面时,该元素的文本会更改。所以如果我转到第二页,它会说“显示 11-20 of 2100”。在继续测试之前,如何让 webdriver 等待该元素的文本更改。因此,当我从第 1 页转到第 2 页时,我想等待该元素的文本等于“displaying 11-20 of 2100”,然后再继续测试的其余部分。

java selenium

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

我可以验证输入字段是否被屏蔽或显示文本吗?

使用 Java 和 webdriver,我尝试设置一个测试来验证我输入的密码是否被屏蔽。使用我的工具,我们有一个设置,允许您屏蔽密码或显示文本。我想知道是否有人用 Selenium 验证过类似的事情。

这是我要检查的内容 设置关闭 - 在输入字段中键入内容并验证是否显示文本 设置开启 - 在输入字段中键入并验证我的输入是否被屏蔽

我相信浏览器可以处理屏蔽,所以我不确定是否可以进行此测试。输入字段的元素没有任何有关屏蔽的属性。

感谢您的帮助

java selenium

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

如何使用Java和Webdriver验证下拉列表中的所有可用选项

我有一个包含许多值的下拉列表.我想写一个方法,我可以输入所有下拉值的预期文本,并将其与所有下拉值的实际文本进行比较.如果它们匹配,则测试通过.我目前正在使用webdriver和Java.

<select id="ctl00_cphMainContent_dq14_response" name="ctl00$cphMainContent$dq14$response">
<option value="0" selected="selected">Please Select...</option>
<option value="253">DEP900</option>
<option value="252">DEP800</option>
<option value="251">DEP700</option>
<option value="250">DEP600</option>
<option value="248">DEP400</option>
<option value="247">DEP300</option>
<option value="246">DEP200</option>
<option value="245">DEP100</option>
<option value="249">DEP500</option>
<option value="254">DEP1000</option>
Run Code Online (Sandbox Code Playgroud)

java selenium

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

使用 GEB 断言元素不存在于 dom 中

我正在尝试根据登录者验证页面。某些用户具有更高的安全性,并且会在页面上看到更多项目。当安全性较低的用户登录时,他们将看不到选项。我需要验证页面上不存在这些选项。

我有一个基于用户安全显示的选项的页面对象

testObject {$("#test")}
Run Code Online (Sandbox Code Playgroud)

我试过使用 isDisplayed()

boolean hidden =  testObject.isDisplayed()
assert !hidden
Run Code Online (Sandbox Code Playgroud)

但我不断收到一个错误,说

geb.error.RequiredPageContentNotPresent:所需的页面内容geb.navigator.EmptyNavigator'不存在

错误消息是我想要验证的。该对象不存在,我需要验证它是否正确并通过测试。

selenium geb

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