当我运行它时,我有一个单元测试正在通过python manage.py test,但是当我从PyCharm中运行它时失败了.
def test_alpha(self):
from selenium.webdriver.common.utils import free_port
from selenium import webdriver
driver = webdriver.PhantomJS(executable_path=PHANTOMJS_PATH, port=free_port())
driver.quit()
Run Code Online (Sandbox Code Playgroud)
从PyCharm运行时遇到的异常是
WebDriverException: Message: 'Can not connect to GhostDriver'
Run Code Online (Sandbox Code Playgroud)
我花了相当多的时间来研究这个问题,我注意到当我手动指定一个端口时,测试在PyCharm中传递.
# suppose 50000 happens to be a free port on your computer
driver = webdriver.PhantomJS(executable_path=PHANTOMJS_PATH, port=50000)
Run Code Online (Sandbox Code Playgroud)
快速回顾一下:
python manage.py testport=free_port()PyCharm做的是让测试无法连接到Ghostdriver?
# For convenience, the `free_port()` code snippet is here
# selenium.webdriver.common.utils.freeport
def free_port():
free_socket = socket.socket(socket.AF_INET, socket.SOCK_STREAM)
free_socket.bind(('127.0.0.1', 0))
free_socket.listen(5)
port = free_socket.getsockname()[1]
free_socket.close()
return port
Run Code Online (Sandbox Code Playgroud) 我正在尝试找到有关如何在"客户端 - 服务器"类型的设置中使用PHP绑定设置Selenium的具体信息.我甚至不确定我想要的是否可行,但我会尽力描述我想要实现的目标.
我在一个Web开发项目上做QA,我们正在与分布式团队成员合作.我们需要自动化的前端测试,并且已经决定(由于许多因素)Selenium是这项工作的最佳候选人.我们的团队专注于PHP,因此使用Selenium和PHP绑定是有意义的.
我最大的挑战是:
1)如何安装这些PHP绑定?
2)如何在PHP中创建和执行Selenium脚本?这个看起来很明显,但我需要知道我是否需要在PHP中创建某种"项目",或者这是否需要不同的步骤.当涉及默认的JAVA绑定时,手册非常清晰和详细,但是对于PHP绑定毫无希望地缺乏.
3)我如何做这一切,同时想要从客户端调用测试,但是让它由"服务器/ VM"执行?(请记住,如果存在可能性,我还希望能够在服务器上创建测试,可以在客户端的桌面上执行/调用测试活动.)
4)如何设置满足使用PHP绑定运行Selenium Server的所有要求的服务器?
目标是能够最初创建一个VM(可能是一个Vagrant框),其中包含Selenium Server(如果需要其他组件)和实际测试脚本,可以在团队成员之间共享.这个VM应该都能够执行无头测试,但理想情况下也应该能够在主机上进行测试(如果可能的话).
从技术上讲,它应该支持QA在产品中发现问题的情况,并且应该能够指定所需的脚本来重现它.有修复问题任务的开发人员应该只需要在他的机器上运行脚本来实际重现找到的错误.
最终我们想要将VM迁移到实际的服务器,因此我们想要从一开始就这样设置它.一旦我们准备好移动到物理服务器,这将使事情变得更加简单.
我一直在互联网上查找详细的文档,但在几乎任何文档中都有很多关于已经配置和设置环境的假设.我真的需要一步一步解释如何设置.
PHPUnit与Selenium配对似乎有点奇怪,因为它们都涵盖了完全不同的测试领域.我在PHPUnit网站上看到了(再次不完整)的说明,但这看起来非常笨重,我们的开发团队对此设置并不十分热衷.我们有人建议Jenkins,但我个人并没有看到Jenkins如何消除Selenium的正常设置,无论如何都必须从头开始.
我已经将Selenium Server作为VM中的服务运行,我只需要知道我还需要什么,以及我需要如何设置它,如何配置它.如何让事情沟通等
任何帮助/想法将受到高度赞赏.
我正在使用AngularJS/JBOSS构建SaaS解决方案,该解决方案托管在AWS EC2实例上; 我们所有的功能都包含在单元和e2e测试中.所有测试都在本地运行良好.我们无法弄清楚如何在AWS上运行它们.我们的AWS安装包括无头CHROME,根据以下说明安装:
重现步骤
观察到的行为 1. webdriver终端上显示以下错误:
/usr/local/lib/node_modules/protractor/selenium/chromedriver: error while loading shared libraries: libgconf-2.so.4: cannot open shared object file: No such file or directory
06:41:15.140 WARN - Exception thrown
Run Code Online (Sandbox Code Playgroud)
预期行为 1.量角器测试执行无误
其他资源:1.量角器配置文件
exports.config = {
seleniumAddress: 'http://localhost:4444/wd/hub',
specs: ['../test/e2e/**/*.js'],
// A base URL for your application under test. Calls to browser.get()
// with relative paths will be prepended with this.
baseUrl: 'http://localhost:8080/markodojo_solution/#/a3bc8692-5af4-4a4d-b21b-4e6f87dc2a32',
// Options to be passed to Jasmine-node.
jasmineNodeOpts: {
showColors: …Run Code Online (Sandbox Code Playgroud) google-chrome amazon-ec2 angularjs selenium-webdriver protractor
我用PHP运行Selenium RC.我运行一个简单的登录测试,成功完成,但在关闭浏览器之前,我收到以下错误:
23:50:09.969 INFO - 命令请求:testComplete [,]在会话d7a1effeabc24b0b9b46ad6fdb3eebec 23:50:09.969信息 - 杀死谷歌Chrome ... 23:50:10.286信息 - 得到结果:确定会话d7a1effeabc24b0b9b46ad6fdb3eebec 23:50:10.349 INFO - 命令请求:getLocation [,] on session null 23:50:10.351 ERROR - 在会话上运行'getLocation'命令的异常null.java.lang.OullPointerException:sessionId不应为null; 这个会议已经开始了吗?在Org.openqa.selenium.server.SeleniumResourceHandler的org.openqa.selenium.server.commands.SeleniumCoreCommand.execute(SeleniumCoreCommand.java:34)上的org.openqa.selenium.server.FrameGroupCommandQueueSet.getQueueSet(FrameGroupCommandQueueSet.java:216) .doCommand(SeleniumDriverResourceHandler.java:562)org.openqa.selenium.java:357)at org.openqa.jetty.util.ThreadPool $ PoolThread.run(ThreadPool.java:534)23:50:10.364 INFO - 得到的结果:ERROR服务器异常:sessionId不应为null; 这个会议已经开始了吗?在会话上null
我找不到解决办法......请帮忙.
我们使用提供的GWT SimplePager来提供数据集的记录/页面导航.我们想要测试我们正确控制Next/Previous按钮的启用状态.虽然SimplePager让我们指定启用/禁用图像的按钮,"按钮"本身是一个内部类的ImageButton延伸Image,而不是按钮.因此,生成的HTML不使用Button启用/禁用属性,而是为每个状态提供不同的嵌入图像.
有没有合理的方法来检测Selenium中的SimplePager导航按钮启用状态?
我们正在与 Selenium webdriver 合作,对 Internet Explorer 11 进行 UI 测试。\xc2\xa0\n在测试的 Web 应用程序中,会弹出几个屏幕。在一些测试中,我们最终得到了三个浏览器窗口,因此也得到了三个 Driver.WindowHandles。\xc2\xa0\n要从一个 WindowHandle 切换到另一个,我们预计 Driver.WindowHandles 将按照最旧的窗口在前、最新的窗口在后的方式进行排序。但事实并非如此:它完全是随机的!\xc2\xa0
\n\n因为窗口句柄是一个 GUID,所以我们最终创建了一个字典,以 WindowHandle GUID 作为键,其值为浏览器窗口中加载的页面类型。\n但这也会导致在关闭窗口时维护字典。\ xc2\xa0
\n\n对于这么简单的事情来说,这似乎是一个很大的工作量。对此有更好的解决方案吗?
\n我需要在.net core 2.0项目上安装nuget包SpecFlow 2.1.0,但出现问题。

如果您运行以下代码,那么在循环的每次迭代中,浏览器将显示在前面并获得焦点.
public class Program
{
private static void Main()
{
var driver = new ChromeDriver();
driver.Navigate().GoToUrl("https://i.imgur.com/cdA7SBB.jpg");
for (int i = 0; i < 100; i++)
{
var ss = ((ITakesScreenshot)driver).GetScreenshot();
ss.SaveAsFile("D:/imgs/i.jpg");
}
}
}
Run Code Online (Sandbox Code Playgroud)
问题是:为什么会发生这种情况并且可以关闭它?无头mod不合适.
当Selenium需要保存/读取文件或启动进程时,似乎总会发生这种情况.
我试图根据我在维基百科页面屏幕上看到的文本找到一个元素。现在,首先我尝试了driver.findElement(By.LinkText("English"));但没有结果。但后来我尝试了下面的代码,driver.findElement(By.partialLinkText("English"));它成功了。有人可以根据维基百科页面向我解释一下,为什么会这样?因为这个例子真的很简单,我不知道为什么driver.findElement(By.LinkText("English"));不起作用?
driver.get("http://www.wikipedia.org");
WebElement link;
link = driver.findElement(By.partialLinkText("English"));
link.click();
Run Code Online (Sandbox Code Playgroud) 更新后的版本
我试图找到一种更动态的方式来等待元素而不是使用静态等待函数 Task.Event(2000).Wait();
对此的解决方案似乎是这样的:
WebDriverWait wait = new WebDriverWait(driver, TimeSpan.FromSeconds(30));
wait.Until(ExpectedConditions.ElementToBeClickable(By.XPath("//div[2]/div/input")));
Run Code Online (Sandbox Code Playgroud)
但是当我使用这个函数时,"ExpectedConditions"总是亮起红色,表示它:"当前上下文中不存在".
我把这个函数放在我的一个测试用例中:
(我使用的是C#/ Visual Studios,项目类型:Classlibrary)
using NUnit.Framework;
using OpenQA.Selenium;
using OpenQA.Selenium.Chrome;
using OpenQA.Selenium.Firefox;
using OpenQA.Selenium.Support.UI;
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
namespace ClassLibrary1
{
public class MyFirstTest
{
IWebDriver driver = new FirefoxDriver();
[Test]
public void WaitverifyTest()
{
driver.Navigate().GoToUrl("https://www.google.se/");
driver.Manage().Window.Maximize();
Task.Delay(4000).Wait();
driver.FindElement(By.XPath("//div[2]/div/input")).SendKeys("Selenium");
WebDriverWait wait = new WebDriverWait(driver, TimeSpan.FromSeconds(10));
IWebElement element = wait.Until(ExpectedConditions.ElementToBeClickable(By.XPath("//div[2]/div/input")));
element.Click();
driver.FindElement(By.XPath("//center/input")).Click();
}
}
}
Run Code Online (Sandbox Code Playgroud)
(xpath是一个位置类型xpath,它是有效的,可以在Selenium IDE和Visual Studios中使用.)
任何人都知道我做错了什么?
我有两个怀疑:
selenium ×5
c# ×4
.net-core ×1
amazon-ec2 ×1
angularjs ×1
gwt ×1
installation ×1
java ×1
jenkins ×1
null ×1
phantomjs ×1
php ×1
phpunit ×1
protractor ×1
pycharm ×1
python ×1
session ×1
specflow ×1
testcomplete ×1
unit-testing ×1
wait ×1