标签: webdriver

Selenium的Remote Control与WebDriver有什么区别?

我不确定我是否完全明白其中的区别.WebDriver API还可以直接控制所选的浏览器.什么时候应该使用硒遥控器(selenium RC)?

现在,我目前的情况是我正在测试一个Web应用程序,通过编写一个带有Selenium WebDriver API的套件并让它在我的计算机上运行.测试需要更长时间才能完成,所以我一直在寻找在Linux服务器上运行测试的方法.

如果我使用Selenium Remote Control,这是否意味着我必须重写我用WebDriver API编写的所有东西?

我对Selenium Grid,Hudson,Selenium RC感到困惑.我为Hudson找到了一个Selenium Grid插件,但不确定这是否包含Selenium RC.

我采取正确的路线吗?我设想了以下架构:

  • Hudson在少数Ubuntu专用服务器上运行.
  • Hudson使用Xvnc和Selenium Grid插件运行.(我需要单独安装Firefox吗?)
  • Selenium网格运行硒RC测试套件.

我认为这比使用WebDriver API在我当前工作的台式计算机上运行测试更有时间效率.

selenium webdriver hudson-plugins

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

是否有无法检测到的 Selenium WebDriver 版本?

我在住宅代理网络后面的Ubuntu服务器上通过 Selenium 运行 Chrome 驱动程序。然而,我的硒正在被检测到。有没有办法让 Chrome 驱动程序和 Selenium 100% 无法检测?

我已经尝试了很长时间,但我忘记了我所做的许多事情,包括:

  1. 尝试不同版本的 Chrome
  2. 添加几个标志并从 Chrome 驱动程序文件中删除一些词。
  3. 使用隐身模式在代理(住宅代理)后面运行它。
  4. 加载配置文件。
  5. 随机鼠标移动。
  6. 随机化一切。

我正在寻找 100% 无法检测到的真正 Selenium 版本。如果那曾经存在过。或者机器人跟踪器无法检测到的另一种自动化方式。

这是浏览器启动的一部分:

sx = random.randint(1000, 1500)
sn = random.randint(3000, 4500)

display = Display(visible=0, size=(sx,sn))
display.start()


randagent = random.randint(0,len(useragents_desktop)-1)

uag = useragents_desktop[randagent]
#this is to prevent ip leaking
preferences =
    "webrtc.ip_handling_policy" : "disable_non_proxied_udp",
    "webrtc.multiple_routes_enabled": False,
    "webrtc.nonproxied_udp_enabled" : False

chrome_options.add_experimental_option("prefs", preferences)
chrome_options.add_argument("--disable-dev-shm-usage")
chrome_options.add_argument("--no-sandbox")
chrome_options.add_argument("--disable-impl-side-painting")
chrome_options.add_argument("--disable-setuid-sandbox")
chrome_options.add_argument("--disable-seccomp-filter-sandbox")
chrome_options.add_argument("--disable-breakpad")
chrome_options.add_argument("--disable-client-side-phishing-detection")
chrome_options.add_argument("--disable-cast")
chrome_options.add_argument("--disable-cast-streaming-hw-encoding")
chrome_options.add_argument("--disable-cloud-import")
chrome_options.add_argument("--disable-popup-blocking")
chrome_options.add_argument("--ignore-certificate-errors")
chrome_options.add_argument("--disable-session-crashed-bubble")
chrome_options.add_argument("--disable-ipv6")
chrome_options.add_argument("--allow-http-screen-capture") …
Run Code Online (Sandbox Code Playgroud)

selenium google-chrome webdriver selenium-chromedriver selenium-webdriver

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

将Chrome驱动程序与Selenium 2配合使用

我正在尝试使用Chrome Drive来执行我的一些测试,这些测试与Firefox完美配合,但我无法执行它们,我已经验证了要求,这是Chrome的位置,版本12或更高,以及类似的东西,但无论如何仍然无法正常工作,调用驱动程序的方式是:

WebDriver fd = new ChromeDriver();
fd.get("url");
Run Code Online (Sandbox Code Playgroud)

然后搜索一些元素,但没有任何工作,错误消息是:

线程"main"中的异常org.openqa.selenium.WebDriverException:找不到Chrome.设置webdriver.chrome.bin系统信息:os.name:'Windows XP',os.arch:'x86',os.version:'5.1',java.version:'1.6.0_18'驱动程序信息:driver.version: ChromeDriver位于org.openqa.selenium.chrome.ChromeBinary.getChromeBinaryLocation(ChromeBinary.java:220)org.openqa.selenium.chrome.ChromeBinary.getCommandline(ChromeBinary.java:121)org.openqa.selenium.chrome.ChromeBinary.在Org.openqa的org.openqa.selenium.chrome.ChromeBinary.start(ChromeBinary.java:109)上的prepareProcess(ChromeBinary.java:67)org.openqa.selenium.chrome.ChromeCommandExecutor.start(ChromeCommandExecutor.java:373)位于org.openqa.selenium.chrome.ChromeDriver的org.openqa.selenium.remote.RemoteWebDriver.(RemoteWebDriver.java:85).selenium.chrome.ChromeDriver.startClient(ChromeDriver.java:65).(ChromeDriver.java:25 )org.openqa.selenium.chrome.ChromeDriver.(ChromeDriver.java:43)atg.openqa.selenium.chrome.ChromeDriver.(ChromeDriver.java:53)at equifax.qa.test.NewTests.access.main( access.java:11)

如果有人能帮助我会很棒.

java testing selenium webdriver

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

如何使用selenium使用css选择器获取所有元素的直接子项?

我已经尝试使用">"语法,但selenium不接受它,我知道有一种方法可以使用Xpath来获取它,但我们的整个项目是使用CSS选择器编写的.

我试图存储一个列表,其中包含元素的所有直接子元素但不包含它们的子元素(后代),当我使用"*"语法时,我得到了所有元素的后代.

javascript css selenium webdriver selenium-webdriver

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

用Python最大化WebDriver(Selenium 2)

我正在尝试编写一个简单的脚本,检查我是否有任何标记为SOMETHING的gmail电子邮件,然后打开一个登录页面的firefox浏览器窗口,之后它会转到别的位置.

这是我正在做的事情:

from selenium import webdriver
from selenium.webdriver.support.ui import WebDriverWait
from selenium.common.exceptions import TimeoutException
from selenium.webdriver.common.action_chains import ActionChains
import time, imaplib

Eusername = "someone@gmail.com"
Epassword = "password1"

username = "username"
password = "password2"

imaps = imaplib.IMAP4_SSL('imap.gmail.com','993')
imaps.login(Eusername,Epassword)

imaps.select('SOMETHING')
status, response = imaps.status('SOMETHING', "(UNSEEN)")
unreadcount = int(response[0].split()[2].strip(').,]'))

while unreadcount > 0:
    driver = webdriver.Firefox()
    driver.get('http://wwww.SomeURL.com/some_login.html')
    time.sleep(3)
    inputElement = driver.find_element_by_name("user")
    inputElement.send_keys(username)
    inputElement = driver.find_element_by_name("pw")
    inputElement.send_keys(password)
    inputElement.submit()
    time.sleep(1)
    driver.get('http://www.SomeURL.com/somethingelse.html')
    imaps.select('SOMETHING')
    typ ,data = imaps.search(None,'UnSeen')
    imaps.store(data[0].replace(' ',','),'+FLAGS','\Seen')
Run Code Online (Sandbox Code Playgroud)

我花了几个小时搜索,但没有找到最大化浏览器窗口的解决方案.在其他地方我已经读过有一个windowMaximize()或window_maximize(),但由于我尝试过的每个配置声称它不存在于任何模块中,因此无法使它们工作.

我只知道一个小python,我在Mac OSX工作

python selenium webdriver maximize selenium-webdriver

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

InternetExplorerDriver缩放级别错误

我正在尝试对IE8运行测试,但我遇到了一个奇怪的问题:

  1. 在创建webdriver实例(driver = Selenium :: WebDriver.for:ie)时,IE启动并且WebDriver抛出异常:

    "启动Internet Explorer时出现意外错误.浏览器缩放级别设置为0%"

  2. IE似乎显示无法连接到IE驱动程序服务器,但如果我手动刷新浏览器,它连接就好了.

    我在网上查了一下,只有两个人似乎报了这个.一种可能的解决方案是确保所有区域都具有相同的"保护模式"设置.

    我的环境是Windows 7和IE8与IE驱动程序服务器v2.25.3,我正在使用Ruby绑定.

有任何想法吗?

selenium webdriver selenium-webdriver

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

如何使用.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万
查看次数

澄清混合Selenium doc的隐式和显式等待的原因

我正在阅读SeleniumHQ文档并遇到以下声明.

"警告:不要混合隐式和显式等待.这样做可能会导致不可预测的等待时间.例如,设置10秒的隐式等待和15秒的显式等待可能会导致20秒后发生超时."

出于某种原因,我无法理解这一点.总超时20秒是我的主要困惑点.任何人都可以解释我是否遗漏了什么?

编辑

我的问题不是关于混合这些等待的实施/后果.它完全是关于doc上的语句和超时计算.

第二次编辑

根据下面的测试,看起来文档是正确的.我仍然需要解释.

只是暗示等待

using System;
using System.Diagnostics;
using NUnit.Framework;
using OpenQA.Selenium;
using OpenQA.Selenium.Chrome;

namespace Test
{
    [TestFixture]
    public class Test
    {
        private IWebDriver _webDriver;

        [Test]
        public void ExplicitVsImplicitWaitTest()
        {
            _webDriver = new ChromeDriver();
            _webDriver.Manage().Timeouts().ImplicitlyWait(TimeSpan.FromSeconds(10));
            _webDriver.Navigate().GoToUrl("https://www.google.com/");
            _webDriver.Manage().Window.Maximize();

            Stopwatch stopwatch = new Stopwatch();
            stopwatch.Start();

            try
            {
                //new WebDriverWait(_webDriver, TimeSpan.FromSeconds(15)).Until(
                //ExpectedConditions.ElementExists(By.CssSelector("Should Fail")));
                _webDriver.FindElement(By.CssSelector("Should Fail"));
            }
            catch ( NoSuchElementException exception)
            //catch ( OpenQA.Selenium.WebDriverTimeoutException)
            {
                stopwatch.Stop();
                Console.WriteLine(stopwatch.Elapsed);
            }

            _webDriver.Quit();

        }
    }
}
Run Code Online (Sandbox Code Playgroud)

时间秒:00:00:10.0167290

只是明确等待

using System; …
Run Code Online (Sandbox Code Playgroud)

selenium webdriver selenium-webdriver

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

在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
查看次数