我是测试的新手,所以如果我的问题听起来有些重要,我会提前道歉.
我正在使用Selenium和Java来编写测试.
我知道这
webElement.getAttribute("innerHTML");带来了innerHTML,例如下面的元素:
<a href="#" class="ui-dialog-titlebar-close ui-corner-all" role="button" style="position: absolute; border-radius: 0px 0px 4px 4px;">
<span class="ui-icon ui-icon-closethick">close</span>
</a>
Run Code Online (Sandbox Code Playgroud)
它返回:
<span class="ui-icon ui-icon-closethick">close</span>
Run Code Online (Sandbox Code Playgroud)
但我需要一些东西给我带来WebElement"a"的内在属性,如下所示:
href="#" class="ui-dialog-titlebar-close ui-corner-all" role="button" style="position: absolute; border-radius: 0px 0px 4px 4px;"
Run Code Online (Sandbox Code Playgroud) java testing selenium selenium-chromedriver selenium-webdriver
我在我的开发目录中安装了geckodriver
ls | grep geckodriver
geckodriver
geckodriver-v0.11.1-linux64.tar.gz
Run Code Online (Sandbox Code Playgroud)
我还导出了$ PATH变量
export PATH=$PATH:~/Development/geckodriver
Run Code Online (Sandbox Code Playgroud)
但是当我尝试在我的项目的rails控制台上初始化webdriver的一个实例时,我得到了这个
driver = Selenium :: WebDriver.for:firefox
Selenium :: WebDriver :: Error :: WebDriverError:无法找到Mozilla geckodriver.请从https://github.com/mozilla/geckodriver/releases下载服务器并将其放在PATH上的某个位置.更多信息,请访问https://developer.mozilla.org/en-US/docs/Mozilla/QA/Marionette/WebDriver 这里有什么问题.
我试图只detailMessage从异常中获取:
} catch (Exception e) {
logger.error(failed + e.getCause().getMessage()); }
Run Code Online (Sandbox Code Playgroud)
日志文件包含
“无法找到名称为 == filter:P_ClearButtonDFI 的元素(警告:服务器未提供任何堆栈跟踪信息)命令持续时间或超时:30.24 秒有关此错误的文档,请访问:http ://seleniumhq.org/exceptions/ no_such_element.html 构建信息:版本:'2.47.1',修订:'411b314',时间:'2015-07-30 03:03:16' 系统信息:主机:'OACVWMAX10006',ip:'10.29.19.64',操作系统。名称:'Windows 7',os.arch:'amd64',os.version:'6.1',java.version:'1.7.0_79' *** 元素信息:{Using=name, value=filter:P_ClearButtonDFI} 会话ID:5149a0b8-475e-4d89-a9d6-e5115e773da8 驱动程序信息:org.openqa.selenium.ie.InternetExplorerDriver 功能 [{platform=WINDOWS, javascriptEnabled=true, elementScrollBehavior=0, ignoreZoomSetting=false, enablePersureCleanieHover= false,browserName=internet explorer,enableElementCacheCleanup=true,unexpectedAlertBehaviour=dismiss,version=9,即usePerProcessProxy=false,ignoreProtectedModeSettings=false,cssSelectorsEnabled=true,requireWindowFocus=false,initialBrowserUrl=http://localhost:21733/ , handlesAlerts=true, ie.forceCreateProcessApi=false, nativeEvents=true, browserAttachTimeout=0, ie.browserCommandLineSwitches=,takesScreenshot=true}]"
但我只想
无法找到名称 == 过滤器的元素:P_ClearButtonDFI
我正在尝试安装/配置Selenium进行一些UI测试,而队友不在办公室.我安装了Selenium Webdriver和Eclipse,以及Chrome,Firefox和Edge浏览器驱动程序.我有一些非常简单的脚本启动浏览器并打开一个URL.我只是想验证我的安装和配置是否正常.Firefox和Edge很好,按预期工作.但是,我无法让chrome工作.
这是我的脚本:
package firstPackage;
import org.openqa.selenium.WebDriver;
import org.openqa.selenium.chrome.ChromeDriver;
import org.openqa.selenium.chrome.ChromeOptions;
public class FirstScript {
public static void main(String[] args) {
ChromeOptions options = new ChromeOptions();
options.addArguments("disable-infobars");
options.addArguments("--start-maximized");
WebDriver driver = new ChromeDriver(options);
driver.get("http://www.google.com");
}
}
Run Code Online (Sandbox Code Playgroud)
当我运行它时,Chrome启动.标签的标题是"数据"; 并且地址栏中的URL也是"data;".但是,浏览器不会导航到我指定的URL.大约60秒后,我在eclipse窗口中收到以下错误:
Exception in thread "main" org.openqa.selenium.WebDriverException: unknown error: DevToolsActivePort file doesn't exist
(Driver info: chromedriver=2.39.562718 (9a2698cba08cf5a471a29d30c8b3e12becabb0e9),platform=Windows NT 10.0.16299 x86_64) (WARNING: The server did not provide any stacktrace information)
Command duration or timeout: 60.15 seconds
Build info: version: '3.12.0', revision: '7c6e0b3', time: '2018-05-08T15:15:03.216Z'
System …Run Code Online (Sandbox Code Playgroud) 我在使用“find_element_by_css_selector”来获取元素“Select”(a href)时遇到问题。
我尝试了以下方法,但都不起作用:
driver.find_element_by_css_selector("div.plan.right > a.select.").click()
driver.find_element_by_xpath("//div[@class='plan right']/div[2]/a/select").click()
Run Code Online (Sandbox Code Playgroud)
任何人都可以给我一些建议吗?谢谢!!
<div class="choose_plan">
<h1>Sign up now for <strong>UNLIMITED</strong> access <br/>to all </h1>
<div class="plans">
<div class="plan left">
<div class="head">
<p>MONTHLY</p>
</div>
<div class="body">
<p>annually</p>
</div>
<hr />
<a href="/bbb?plan_id=6" class="select signup-dialog" data-planId="6" data-url="/users/new?r">SELECT</a>
</div>
<div class="plan right">
<img alt="Popular-right" class="popular" src="/assetse8.png" />
<div class="head">
<p>14</p>
</div>
<div class="body">
<p>Unlimited</p>
</div>
<hr />
<a href="/account/purchase?plan_id=31" class="select signup-dialog" data-planId="31" data-url="/users/new?aaa">SELECT</a>
</div>
</div>
</div>
Run Code Online (Sandbox Code Playgroud) 我想从字符串中提取 JSON 数据。这是我的代码:
String APIBody = "{\"queryString\": \"Pearson AND unscrubbed:false\"}";
RequestSpecBuilder rbuild = new RequestSpecBuilder();
rbuild.setBody(APIBody);
rbuild.setContentType("application json;charset = UTF-8");
RequestSpecification rSpec = rbuild.build();
Response resp = given().headers(headers).spec(rSpec).when().post("https://content-service.stg-prsn.com/csg/api/v2/search");
Run Code Online (Sandbox Code Playgroud)
在最后一行中,我将多个标头作为哈希图传递。
我收到以下错误:
Run Code Online (Sandbox Code Playgroud)java.lang.IllegalArgumentException: Don't know how to encode {"queryString": "Pearson AND unscrubbed:false"} as a byte stream. Please use EncoderConfig (EncoderConfig#encodeContentTypeAs) to specify how to serialize data for this content-type. For example: "given().config(RestAssured.config().encoderConfig(encoderConfig().encodeContentTypeAs("application json", ContentType.TEXT))). .." at com.jayway.restassured.internal.http.EncoderRegistry.encodeStream(EncoderRegistry.java:129)
我有一些java的经验,我是gradle的新手,我加入了一个项目,我必须修改gradle文件.
这是我的build.gradle档案
apply plugin: 'java'
apply plugin: 'idea'
sourceCompatibility = 1.5
version = '1.0'
dependencies {
testCompile 'org.testng:testng:6.9.10',
'org.seleniumhq.selenium:selenium-java:2.53.0'
}
test {
useTestNG()
testLogging.showStandardStreams = true
}
Run Code Online (Sandbox Code Playgroud)
然后我使用mac终端中的以下命令运行我的测试套件
./build test
我想传递一个名为environment
基于此参数的值的参数,我需要配置我的URL并运行该环境的测试.像./build test environment=dev或的东西./build test environment=qa
在我的java代码中,我会做这样的事情
if(env == 'dev') {
url = "my dev url";
user = "my dev user name"
} else if(env == 'qa') {
url = "my qa url";
user = "my qa user name"
}
Run Code Online (Sandbox Code Playgroud)
如何在终端中传递此参数?如何在我的代码中使用此参数的一小部分将有很大的帮助(我的java代码没有main方法).
注意:我已经使用了属性文件并实现了此行为,但我的团队不希望在代码中进行更改以设置环境.所以我不得不放弃这些改变.
从Selenium文档中,WebDriver是一个接口,但在Eclipse中,包org.openqa.selenium在Project Explorer中显示为一个类.此外,如果WebDriver是一个接口,那么实现它的ChromeDriver或InternetExplorerDriver等类应该定义类似.get()或的方法.getCurrentUrl().我们在哪里可以看到这些方法的方法定义?
我正在为SafePipe 编写测试.该方法使用bypassSecurityTrustResourceUrl().我搜索了可用的解决方案并尝试了它们但不幸的是,它对我没有帮助.错误是
预期的SafeValue必须使用[property] = binding:Cross(请参阅http://g.co/ng/security#xss)为"Cross site Request".
我在这做什么错了?
import {Pipe, PipeTransform} from "@angular/core";
import {DomSanitizer} from "@angular/platform-browser";
@Pipe({name: 'safe'})
export class SafePipe implements PipeTransform {
constructor(private sanitizer: DomSanitizer) {
}
public transform(url: string): any {
return this.sanitizer.bypassSecurityTrustResourceUrl(url);
}
}
Run Code Online (Sandbox Code Playgroud)
测试是:
import {SafePipe} from './safe.pipe';
import {DomSanitizer} from "@angular/platform-browser";
import {DomSanitizerImpl} from "@angular/platform-browse/src/security/dom_sanitization_service";
fdescribe('SafePipe', () => {
let pipe: SafePipe;
let sanitizer: DomSanitizer = new DomSanitizerImpl();
beforeEach(() => {
pipe = new SafePipe(sanitizer);
});
it('should …Run Code Online (Sandbox Code Playgroud) 到现在为止我所了解的是
::child 查找当前节点的直接子注释::following 查找当前节点的直接子级和子级子级,依此类推。::descendant什么有人可以通过简单的例子帮助我理解吗?
java ×6
selenium ×3
angular ×1
bash ×1
gradle ×1
protractor ×1
python ×1
rest-assured ×1
ruby ×1
testing ×1
testng ×1
ubuntu-16.04 ×1
webdriver ×1
xpath ×1