标签: webdriver

如何使用.net更改selenium中的用户代理

我想用不同的代理(iPhone,iPad,Android)测试用.NET编写的Web应用程序,我正在使用NUnit进行测试和Selenium.

任何人都有一个样本用c#或VB在Selenium中更改代理(例如iPad或iPhone)?

.net selenium user-agent webdriver selenium-webdriver

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

在新标签Selenium + Python中打开网页

所以我试图在我的WebDriver中的新标签上打开网站.我想这样做,因为使用PhantomJS为每个网站打开一个新的WebDriver需要大约3.5秒,我想要更快的速度......

我正在使用多进程python脚本,我想从每个页面获取一些元素,因此工作流程如下所示:

Open Browser

Loop throught my array
For element in array -> Open website in new tab -> do my business -> close it
Run Code Online (Sandbox Code Playgroud)

但我找不到任何方法来实现这一目标.

这是我正在使用的代码.网站之间需要永远,我需要快速...其他工具是允许的,但我不知道有太多工具可以删除使用JavaScript加载的网站内容(在加载时触发某些事件时创建的div)这是为什么我需要Selenium ... BeautifulSoup不能用于我的一些页面.

#!/usr/bin/env python
import multiprocessing, time, pika, json, traceback, logging, sys, os, itertools, urllib, urllib2, cStringIO, mysql.connector, shutil, hashlib, socket, urllib2, re
from selenium import webdriver
from selenium.webdriver.common.keys import Keys
from PIL import Image
from os import listdir
from os.path import isfile, join
from bs4 import BeautifulSoup
from pprint import pprint

def …
Run Code Online (Sandbox Code Playgroud)

python selenium webdriver phantomjs

19
推荐指数
10
解决办法
9万
查看次数

在Sikuli X Java中查找图像

我在尝试在屏幕上找到图像时遇到问题,我尝试以两种不同的方式进行操作,但它似乎对我不起作用.我试图用在IOS模拟器上运行的Appium来显示屏幕,所以我不认为这是一个截图的问题.

我正在运行MAC OSX El Capitan我已经在我的项目中导入了Sikuli X java API

我是否还需要导入MAC Sikuli Library jar?

这是我到目前为止所尝试的:

1.

Screen s = new Screen();
Pattern test = new Pattern("/Users/ealiaj/Desktop/Automation/workspace/WheelsUp - IOS/screenshot.jpg");
try {
    s.find(test);
} catch (FindFailed e) {

}
Run Code Online (Sandbox Code Playgroud)

2.

Screen s = new Screen();
try {
    s.find("screenshot.jpg");
} catch (FindFailed e) {

}
Run Code Online (Sandbox Code Playgroud)

我一直在找不到错误.

错误信息:

FindFailed:找不到/ Users/ealiaj/Desktop/Automation/workspace/WheelsUp - IOS/screenshot1.jpg in S(0)[0,0 1440x900] Line 2189,in文件Region.java

图像试图找到 这是屏幕上的图像,大红色矩形是我为其创建屏幕截图并尝试查找的图像,但得到了该错误.

我唯一能够成功找到的是灰色矩形,或者至少它不会引发错误.

java webdriver sikuli selenium-webdriver appium

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

Selenium WebDriver HTTP错误:403禁止代理RequestURI =/session

使用运行Selenium 2 RemoteWebDriver服务器java -jar selenium-server-standalone-2.15.0.jar.

我总是得到错误:

HTTP ERROR: 403
Forbidden for Proxy
RequestURI=/session
Run Code Online (Sandbox Code Playgroud)

使用python WebDriver客户端连接到它时:

import selenium.webdriver as webdriver
webdriver.Remote('http://localhost:4444', {})
Run Code Online (Sandbox Code Playgroud)

或者我能找到的任何其他各种RemoteWebDriver客户端.

proxy selenium webdriver selenium-webdriver

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

在Selenium WebDriver中设置加载页面的实际超时时间?

我正在测试一个包含大量代理的站点,问题是其中一些代理非常慢.因此我的代码时不时地加载页面.

from selenium import webdriver

browser = webdriver.Firefox()
browser.get("http://example.com/example-page.php")
element = browser.find_element_by_id("someElement")
Run Code Online (Sandbox Code Playgroud)

我已经尝试了许多类似的东西explicit waits,implicit waits并且已经搜索了很长一段时间但仍然没有找到解决方案或解决方法.似乎没有什么真正影响页面加载线browser.get("http://example.com/example-page.php"),这就是为什么它总是卡在那里.

有人为此得到了解决方案吗?

更新1:

JimEvans的回答解决了我之前的问题,在这里你可以找到这个新功能的python补丁.

新问题:

browser = webdriver.Firefox()
browser.set_page_load_timeout(30)

browser.get("http://example.com/example-page.php")

element = browser.find_element_by_id("elementA")
element.click() ## assume it's a link to a new page http://example.com/another-example.php

another_element = browser.find_element_by_id("another_element")
Run Code Online (Sandbox Code Playgroud)

正如你所看到的那样,browser.set_page_load_timeout(30)只影响browser.get("http://example.com/example-page.php")这意味着如果这个页面加载超过30秒就会抛出超时异常,但问题是它没有超过页面加载的能力,例如element.click(),尽管它不会阻塞直到新页面完全加载起来,another_element = browser.find_element_by_id("another_element")是在屁股的新的疼痛,因为无论explicit waitsimplicit waits将等待它开始寻找那些元素之前整个页面加载.在某些极端情况下,这甚至需要HOURS.我能做些什么呢?

python selenium webdriver wait selenium-webdriver

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

如果元素不存在,则isElementPresent非常慢.

我使用下面的代码来检查我的网页上的元素

private boolean isElementPresent(By by) {
try {       
      driver.findElement(by);
      return true;
    } catch (NoSuchElementException e) {
        return false;
    }
    catch (Exception e)
    {       
        return false;
    }

  }
Run Code Online (Sandbox Code Playgroud)

如果特定区域出现在结果中,我需要检查我的程序,如下所示

isElementPresent(By.xpath(".//*[@id='header']")));
Run Code Online (Sandbox Code Playgroud)

如果存在,则此功能快速完成,但如果不存在,则运行很长时间.

有人可以帮我解决这个问题,以便快速执行此检查吗?

selenium webdriver selenium-webdriver

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

通过驱动程序ChromeOptions和DesiredCapabilities?

新的Google Chrome更新会在浏览器中显示此消息"您正在使用不受支持的命令行标记:--ignore-certificate-errors.稳定性和安全性将受到影响."

从我读到的关于selenium bug报告的内容来看,临时解决方案就是启动webdriver

options.AddArgument("test-type")
Run Code Online (Sandbox Code Playgroud)

我在创建驱动程序时已经传递了DesiredCapabilities.如何将ChromeOptions和DesiredCapabilities传递给驱动程序?

DesiredCapabilities capabilities = DesiredCapabilities.chrome();
capabilities.setCapability("chrome.switches", Arrays.asList("--incognito"));

ChromeOptions options = new ChromeOptions();
options.addArguments("test-type");

WebDriver driver = new ChromeDriver(capabilities);
Run Code Online (Sandbox Code Playgroud)

selenium webdriver selenium-webdriver

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

Selenium WebDriver - 确定元素是否可点击(即不被dojo模态灯箱遮挡)

我编写了自动脚本来测试非常重的ajax的Web应用程序.例如,Saving...在保存设置时会显示带有文本" " 的模态对话框,而灯箱会使页面的其余部分灰显.

我的测试脚本试图在消息消失之前单击测试中的下一个链接.它几乎总是在驱动Firefox时有效,但在驱动Chrome时会显示以下错误:

Exception in thread "main" org.openqa.selenium.WebDriverException: Element is not clickable at point (99.5, 118.5). Other element would receive the click: <div class="dijitDialogUnderlay _underlay" dojoattachpoint="node" id="lfn10Dijit_freedom_widget_common_environment_Dialog_8_underlay" style="width: 1034px; height: 1025px; "></div> (WARNING: The server did not provide any stacktrace information)
Run Code Online (Sandbox Code Playgroud)

发生这种情况是因为灯箱遮挡了我想要点击的元素.我想在尝试点击链接之前等待灯箱消失.

检查灯箱不再存在不是一种有效的解决方法,因为有时会有多个级别的模态对话框和灯箱,并且没有简单的方法来区分它们.

在Selenium中是否有办法检测元素是否可点击(没有其他元素遮盖它)?尝试/捕获将是一种解决方法,但我更愿意做一个正确的检查,如果可能的话.

ajax dojo selenium webdriver

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

无法在45000内启动套接字

我正在使用FF版本19

它一切正常,直到昨天,突然今天早上我开始得到这个错误,我有与之前运行的相同的确切代码,没有任何改变

错误信息:

Test 'M:.TestCases.12' failed: Failed to start up socket within 45000
    OpenQA.Selenium.WebDriverException: Failed to start up socket within 45000
    at OpenQA.Selenium.Firefox.Internal.ExtensionConnection.ConnectToBrowser(Int64 timeToWaitInMilliSeconds)
    at OpenQA.Selenium.Firefox.Internal.ExtensionConnection.Start()
    at OpenQA.Selenium.Firefox.FirefoxDriver.StartClient()
    at OpenQA.Selenium.Remote.RemoteWebDriver..ctor(ICommandExecutor commandExecutor, ICapabilities desiredCapabilities)
    at OpenQA.Selenium.Firefox.FirefoxDriver..ctor(FirefoxBinary binary, FirefoxProfile profile, TimeSpan commandTimeout)
    at OpenQA.Selenium.Firefox.FirefoxDriver..ctor(FirefoxBinary binary, FirefoxProfile profile)
    at OpenQA.Selenium.Firefox.FirefoxDriver..ctor(FirefoxProfile profile)

0 passed, 1 failed, 0 skipped, took 145.80 seconds (Ad hoc).
Run Code Online (Sandbox Code Playgroud)

这是我的源代码:

public static IWebDriver GetDriver()
        {
            switch (Common.BrowserSelected)
            {
                case "ff":
                    FirefoxProfile profile = new FirefoxProfile();
                    profile.SetPreference("network.http.phishy-userpass-length", 255);
                    profile.SetPreference("network.automatic-ntlm-auth.trusted-uris", url);
                    drv …
Run Code Online (Sandbox Code Playgroud)

c# firefox webdriver selenium-webdriver

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

Selenium WebDriver C#完整网站截图使用ChromeDriver和FirefoxDriver

当我使用ChromeDriver截取屏幕截图时,我会获得具有视口大小的屏幕.
当我使用FirefoxDriver截取屏幕截图时,我得到了我想要的内容,这是一个网站的全屏幕打印.

ChromeDriver声明如下:

IWebDriver driver = new ChromeDriver();
Run Code Online (Sandbox Code Playgroud)

FirefoxDriver声明如下:

IWebDriver driver = new FirefoxDriver();
Run Code Online (Sandbox Code Playgroud)

两个驱动程序执行相同的代

driver.Manage().Window.Maximize();
driver.Navigate().GoToUrl(url);//url is a string variable
ITakesScreenshot screenshotDriver = driver as ITakesScreenshot;
Screenshot screenshot = screenshotDriver.GetScreenshot();
screenshot.SaveAsFile("c:/test.png", ImageFormat.Png);
Run Code Online (Sandbox Code Playgroud)

ChromeDriver的test.png分辨率为1920x1099,仅包含浏览器视口.
FirefoxDriver的test.png分辨率为1903x16559,包含整个页面.

我知道该GetScreenshot()方法不会返回相同的分辨率大小,因为它在IEDriver,FirefoxDriver,OperaDriver,ChromeDriver中的实现略有不同.

我的问题是:

  1. 为什么ChromeDriver和FirefoxDriver的.GetScreenshot()方法之间存在这样的差异,即使他们使用相同的界面(ITakesScreenshot)?

  2. 有没有办法让ChromeDriver的GetScreenshot()方法返回整个网页屏幕而不仅仅是视口?

c# selenium screenshot webdriver selenium-chromedriver

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