小编Jef*_*ffC的帖子

如何在Selenium中获取WebElement的HTML代码

我是测试的新手,所以如果我的问题听起来有些重要,我会提前道歉.

我正在使用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

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

Ruby selenium webdriver无法找到Mozilla geckodriver

我在我的开发目录中安装了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 这里有什么问题.

ruby bash selenium ruby-on-rails ubuntu-16.04

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

Java 异常:仅获取 detailMessage

我试图只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

java

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

Webdriver和Chrome:DevToolsActivePort文件不存在

我正在尝试安装/配置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)

java selenium-chromedriver selenium-webdriver

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

Selenium - driver.find_element_by_css_selector 找不到元素(python)

我在使用“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)

python selenium-webdriver

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

获取“java.lang.IllegalArgumentException:不知道如何将 XXX 编码为字节流。”

我想从字符串中提取 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)

在最后一行中,我将多个标头作为哈希图传递。

我收到以下错误:

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)
Run Code Online (Sandbox Code Playgroud)

java rest-assured

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

如何在Java代码中访问gradle参数

我有一些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方法).

注意:我已经使用了属性文件并实现了此行为,但我的团队不希望在代码中进行更改以设置环境.所以我不得不放弃这些改变.

java testng gradle

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

webdriver是一个类还是一个接口?

Selenium文档中,WebDriver是一个接口,但在Eclipse中,包org.openqa.selenium在Project Explorer中显示为一个类.此外,如果WebDriver是一个接口,那么实现它的ChromeDriver或InternetExplorerDriver等类应该定义类似.get()或的方法.getCurrentUrl().我们在哪里可以看到这些方法的方法定义?

java selenium webdriver selenium-webdriver

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

Angular2 - 预期的安全值必须使用[property] = binding

我正在为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)

protractor karma-jasmine angular

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

对Xpath轴中的子代,后代和后代之间的差异完全感到困惑

到现在为止我所了解的是

  1. ::child 查找当前节点的直接子注释
  2. ::following 查找当前节点的直接子级和子级子级,依此类推。
  3. 那是::descendant什么

有人可以通过简单的例子帮助我理解吗?

xpath

4
推荐指数
3
解决办法
3466
查看次数