Tag: selenium

Selenium:将Internet Explorer中的文件下载到没有直接链接的指定文件夹,没有Windows窗体,没有AutoIt或Robot

我经常遇到一个问题,如何在IE中下载文件。 与Firefox的Chrome相比,您不仅可以指定所需的文件夹,而且所有文件都将下载到该文件夹​​。 您还需要与本机Windows窗体等进行交互。 有多种选择,比如使用AutoIt,使用键盘命令,机器人等……但是所有这些选项都不稳定,它们需要使用冗余库进行显式等待,并且在并行运行测试时不合适。 另一个问题是,该怎么办,如果文件没有通过直接链接下载,但链接是从javascript命令生成或从服务器接收,并且无法从html中提取。 所有这些问题都可以解决,在这里,我将展示如何做到这一点。 解决方案是用c#编写的,我相信同样可以在java中实现

Selenium IE WebDriver仅在调试时有效

我使用的是Java Gradle,Selenium 3.8.0和IEWebDriver 3.8.0。 Chrome和Firefox工作正常,但IE抛出一​​个org.openqa.selenium.TimeoutException: Expected condition failedexception,虽然IE也可以正常工作,如果我一步一步调试我的源代码。 因此,我花了很长时间才发现这个问题,并且我注意到IE在WebDriver和源代码之间失去连接,每当webDriver.get(..) ,它看起来像这样: driver.get(url); waitForPageLoaded(driver); 因此我假设有一些时间问题,但我已经尝试处理这个: public void waitForPageLoaded(WebDriver driver) { logger.debug(“Wait until the page was loaded.”); // IE seems to fail here. new WebDriverWait(driver, SeleniumConfigurator.TIME_OUT) .until(d -> ((JavascriptExecutor)d).executeScript(“return document.readyState”) .equals(“complete”)); } 然后我注意到IE需要更多配置设置,但我不允许设置其中一些:IT限制 – >我无法更改regedit条目。 但是,为什么它在调试时工作正常? 这是我的IE设置: case IE: path = “../../../../../../resources/driver/win/IEDriverServer_32_v3-8-0.exe”; url = getClass().getResource(path); if (url == […]

如何使用selenium webdriver发送cookie?

每当我运行我的测试时,第一步是登录,而不是我想要的页面。 如果运行此测试,则经常登录操作需要花费大量时间。 如何通过登录操作? 使用Chrome和Firefox驱动程序,java语言。

使用JMeter运行Selenium脚本

我已准备好function流的Selenium自动化脚本,现在我想将这些脚本与JMeter集成以进行负载测试。 那可能吗? 如果是这样如何整合两者? 我的第一个目标是使用selenium运行自动化脚本,而不是在jmeter中运行这些脚本以进行负载或性能测试。

我们是否有任何通用function来检查页面是否已在Selenium中完全加载

我试图在selenium中检查网页是否已加载完成(即检查是否已加载所有控件)。 我尝试下面的代码: new WebDriverWait(firefoxDriver, pageLoadTimeout).until( webDriver -> ((JavascriptExecutor) webDriver).executeScript(“return document.readyState”).equals(“complete”)); 但即使页面加载上面的代码也不会等待。 我知道我可以检查特定元素以检查它是否可见/可点击等,但我正在寻找一些通用的解决方案

我在哪里可以找到明确的Selenium WebDriver到Firefox兼容性矩阵?

我在各种平台上使用Selenium Java和Firefox Web Driver开展了许多项目。 我一次又一次地遇到了我们使用的Selenium WebDriver版本与安装的Firefox版本之间的不兼容性。 当然,第一道防线是确保我们使用最新版本的WebDriver和最新版本的FireFox。 有时,这是不可能的,因为我们使用的是旧版本的Java,或者仅仅因为阻力最小的路径是使用随OS一起分发的Firefox版本。 我真的希望有一个可靠的兼容性矩阵,告诉我哪个版本的Firefox可以使用哪个版本的Selenium WebDriver。 我在哪里可以找到一个?

线程“main”中的exceptionjava.lang.NoClassDefFoundError:org / openqa / selenium / WebDriver

我在我的pom.xml中添加了最新的Selenium依赖项 org.seleniumhq.selenium selenium-java 3.7.1 我用我的pom.xml在目录中运行了mvn clean install,我还根据Selenium文档在我的app类中导入了正确的类 import org.openqa.selenium.WebDriver; import org.openqa.selenium.firefox.FirefoxDriver; 但是当我尝试运行我的main方法时,我收到以下错误 Exception in thread “main” java.lang.NoClassDefFoundError: org/openqa/selenium/WebDriver 我查看〜/ .m2 / repository文件夹,我没有看到openqa文件夹,但我看到了seleniumhq文件夹。 为什么没有maven安装openqa文件夹,为什么文档说从org.openqa导入…当我的jar存储库中永远不存在。 我很困惑,我只是希望能够在我的本地存储库中成功导入selenium Webdriver。

Selenium WebDriver:等待加载JavaScript的复杂页面

我有一个Web应用程序来测试Selenium。 页面加载时会运行很多JavaScript。 这段JavaScript代码编写得不是很好,但我无法改变任何东西。 因此,等待元素出现在DOM中并使用findElement()方法不是一种选择。 我想在Java中创建一个通用函数来等待页面加载,可能的解决方案是: 从WebDriver运行JavaScript脚本,并将document.body.innerHTML的结果存储在字符串变量body 。 将body变量与先前版本的body 。 如果它们相同则设置增量计数器notChangedCount否则将notChangedCount设置为零。 等待一个小时(例如50毫秒)。 如果页面没有改变一段时间(例如500毫秒),那么notChangedCount >= 10然后退出循环,否则循环到第一步。 你认为这是一个有效的解决方案吗?

java.lang.IllegalStateException:驱动程序可执行文件的路径必须由webdriver.chrome.driver系统属性设置

这是我的代码: package Basics; import org.openqa.selenium.WebDriver; import org.openqa.selenium.chrome.ChromeDriver; public class invokegoogle { public static void main(String[] args) { // TODO Auto-generated method stub System.setProperty(“Webdriver.chrome.driver”, “C:\\Users\\sravani\\Desktop.exe”); WebDriver driver=new ChromeDriver(); driver.get(“http://qaclickacademy.com”); } } 出现以下错误: Exception in thread “main” java.lang.IllegalStateException: The path to the driver executable must be set by the webdriver.chrome.driver system property; for more information, see https://github.com/SeleniumHQ/selenium/wiki/ChromeDriver. […]

Selenium中的pageLoadTimeout无效

我在Java中使用selenium使用下面的代码。 我正在添加4秒的pageLoadTimeout,但是,驱动程序继续等待,直到加载完整的页面。 有帮助吗? System.setProperty(“webdriver.gecko.driver”, System.getProperty(“user.home”) + “\\Desktop\\geckodriver.exe”); FirefoxBinary b = new FirefoxBinary(new File(System.getProperty(“user.home”) + “\\desktop\\Mozilla Firefox\\firefox.exe”)); FirefoxOptions options = new FirefoxOptions().setBinary(b); driver = new FirefoxDriver(options); //driver.manage().timeouts().implicitlyWait(1, TimeUnit.SECONDS); driver.manage().timeouts().pageLoadTimeout(4, TimeUnit.SECONDS); driver.get(“https://www.booking.com/hotel/in/the-taj-mahal-palace-tower.html?label=gen173nr-1FCAEoggJCAlhYSDNiBW5vcmVmaGyIAQGYATG4AQbIAQzYAQHoAQH4AQKSAgF5qAID;sid=338ad58d8e83c71e6aa78c67a2996616;dest_id=-2092174;dest_type=city;dist=0;group_adults=2;hip_dst=1;hpos=1;room1=A%2CA;sb_price_type=total;srfid=ccd41231d2f37b82d695970f081412152a59586aX1;srpvid=c71751e539ea01ce;type=total;ucfs=1&#hotelTmpl”); List facilitySectionList = driver.findElements(By.className(“facilitiesChecklistSection”));