Tag: selenium webdriver

需要在没有Thread.sleep的情况下编写selenium代码

我写了以下代码登录网站“qtpselenium.com” 。 如果我在其间给出Thread.sleep以使代码执行暂停一段时间,下面的代码工作正常。 如果我评论Thread.sleep,代码不能按预期工作。 我试图使用selenium的隐式和显式等待使驱动程序等待元素可见,但代码只能在我使用Thread.sleep时按预期工作。 有没有办法,我可以使用下面的代码,而不使用Thraed.Sleep语句。 在selenium代码中使用Thread.sleep语句是不好的做法? import java.util.concurrent.TimeUnit; import org.openqa.selenium.By; import org.openqa.selenium.WebDriver; import org.openqa.selenium.firefox.FirefoxDriver; import org.openqa.selenium.support.ui.ExpectedConditions; import org.openqa.selenium.support.ui.FluentWait; public class QTPSelenium { public static WebDriver driver = null; public static void main(String[] args) throws InterruptedException { System.setProperty(“webdriver.gecko.driver”,”C:\\Eclipse\\Drivers\\geckodriver.exe”); driver = new FirefoxDriver(); driver.get(“http://qtpselenium.com/”); driver.findElement(By.xpath(“.//*[@class=’btn btn-default member_login’]”)).click(); Thread.sleep(10000); driver.findElement(By.xpath(“(//button[@type=’submit’])[3]”)).click(); Thread.sleep(10000); driver.findElement(By.id(“email”)).sendKeys(“Some Email ID”); driver.findElement(By.id(“login-password”)).sendKeys(“Some Password”); driver.findElement(By.xpath(“html/body/main/div[2]/div/div/div[1]/div/div/div/form/button”)).click(); […]

如何找到下拉列表的选定选项?

我们如何在Selenium Webdriver中找到Dropdown的选定选项? 我试过了 – WebElement element = driver.findElement(By.xpath(locator1)); Select select = new Select(element); List SO = select.getAllSelectedOptions(); String S = SO.toString(); System.out.println(S); 返回WebElements,如 – [[[[[FirefoxDriver: firefox on XP (c388e8a8-09d5-41b9-b086-0278c639d8b1)] -> xpath: .//*[@id=’city’]]] -> tag name: option]] 我想找到被选中的选项?

无法在“chrome:// downloads /”页面找到网络元素

我正在使用Java和Selenium为Chrome编写测试。 有时我需要进入chrome://downloads/并单击CLEAR ALL按钮。 我可以到达页面 RemoteWebDriver driver = (RemoteWebDriver) driverChrome; driver.executeScript(“window.open();”); Thread.sleep(500); tabs = new ArrayList(driverChrome.getWindowHandles()); driverChrome.switchTo().window(tabs.get(1)); Thread.sleep(500); driverChrome.get(“chrome://downloads/”); 但我无法点击按钮,无论我使用什么xpath,都说no such element

Selenium得到错误

这是我的selenium测试脚本。 import org.openqa.selenium.WebDriver; import org.openqa.selenium.firefox.FirefoxDriver; import org.openqa.selenium.ie.InternetExplorerDriver; public class Adminlogin { public static void main(String[] args) { //File file = new File(“C:/Selenium/IEDriverServer_x64_2.53.1/IEDriverServer.exe”); System.setProperty(“webdriver.ie.driver”, “C:/Selenium/IEDriverServer_x64_2.53.1/IEDriverServer.exe”); WebDriver driver = new InternetExplorerDriver(); //driver.close(); //Closes the browser } } 我收到此错误, Started InternetExplorerDriver server (64-bit) 2.53.1.0 Listening on port 35197 Only local connections are allowed Oct 07, 2016 9:54:51 PM […]

Selenium – 随机“IE驱动程序的命令行服务器已经停止工作”几个小时后

我公司的电子商务网站有几百个selenium测试。 特别是,其中大约一半是结账测试,差异很小(签证的单身人士,美国运通的多人团队等)。 我提到这一点是因为所有这些测试都使用几乎完全相同的代码,只是略有不同。 这些测试是从Jenkins开始使用Selenium Grid作为集线器并部署到同时运行Chrome和IE测试的Windows Server 2012 VM。 开始我的测试后,几个小时后我会得到一个浏览器弹出窗口,说Command line server for the IE Driver has stopped working还有一个Close the program的按钮。 这会导致测试执行挂起。 我曾尝试升级到VM上最新版本的网格,以及最新版本的IE驱动程序服务器。 我还写了一个小的rest服务器,在每次测试开始时运行Runtime.getRuntime().exec(“taskkill /F /IM IEDriverServer.exe”) (我以为可能一次打开太多窗口导致错误,但即使有这个修复它也没有帮助)。 我还尝试将TabProcGrowth添加到HKEY_CURRENT_USER\Software\Microsoft\Internet Explorer\Main到注册表,但这只是导致在每个测试开始时打开多个窗口,这进一步打破了局面。 另外,我已经实现了一个重试分析器,它将重试失败的测试。 手动单击Close the program ,测试将重新启动,几乎总是通过。 考虑到这一点,以及结账测试的性质,我认为问题不是代码问题。 我已经试了几天才能解决这个问题。 任何帮助将不胜感激!

Selenium 2:以编程方式查找Web元素定位符

我厌倦了从我的网页源手动查找网页元素的定位器(id,xpath,css,linkText等..)。 它也消耗更多的努力。 所以,为了避免我想编写一个直接与页面源交互并生成定位器详细信息的代码(例如id =“xyz”,xpath =“html / body / table / tr / td / a”等)来实现这一点,我想我可以通过使用String对象的split()函数生成ID定位器。 但是,我不知道如何为所有页面组件生成xpaths,css和linkText定位器? 任何人都可以帮我这个吗?

如何在Openlayers上从中心找到Polygon的偏移值

我计算了(x1,Y1)和(x2,Y2)并计算了它们之间的差异(蓝线)并将这些像素值给予驱动程序点击但我无法点击多边形(Point)。 1.首先,鼠标将根据窗口转到地图的中心,其中(x1,y1)=(960,520)但驱动程序会将这些值视为(0,0)。 2.现在我需要计算从地图中心到每个多边形的偏移值。(x1,y1)=(960,520)和(x2,y2)=(1000,232) (x1,y1)和(x2,y2)之间的差异将给出点与中心的距离。例如:(x3,y3) 下面的代码 try { driver.get(“http://localhost:8090/demo/”); System.out.println(“demo opened”); Thread.sleep(15000); WebElement can = driver.findElements(By.tagName(“canvas”)).get(0); Actions builder = new Actions(driver); builder.moveToElement(can,0,0).click().perform(); Thread.sleep(12000); WebElement eler1x = driver .findElement(By.xpath(“/html/body/div[2]/div/div/div/div[3]/div/div/div[17]/div”)); String val1 = eler1x.getText(); System.out.println(val1); WebElement eler1y = driver .findElement(By.xpath(“/html/body/div[2]/div/div/div/div[3]/div/div/div[19]/div”)); String val2 = eler1y.getText(); System.out.println(val2); double x1 = Double.parseDouble(val1); //error line double y1 = Double.parseDouble(val1); double y1 = […]

如何在POM中自动更新selenium版本?

有没有办法在POM文件中自动获取selenium-java版本更新到最新版本,而无需手动更改它? 我尝试创建一个selenium.version变量,可以获取新的selenium更新,但我的POM拒绝索引变量,它显示为红色 org.seleniumhq.selenium selenium-java ${selenium.version} 任何解决方法?

Selenium Scripts在命令行上

有没有办法从命令行运行selenium webdriver测试脚本,这些脚本是通过Eclipse IDE使用Java和JUnit编写的? 我一直在尝试使用Ant或Maven,但我无法使用它。 有人可以提供一些关于去哪里的建议吗?

将Selenium WebDriver连接到现有的浏览器会话

我正在使用selenium,如果现有浏览器会话(对我来说Chrome)当前存在,我想附加一个webdriver实例。 我不想打开新的浏览器窗口/会话。 我用google搜索并看到,有一些方法可以使用这些网站上的描述: 通过扩展RemoteWebDriver重用现有的浏览器会话 ChromeDriverService的基本资料 我在最新版本中使用ChromeDriver 2.29 。 我的代码现在看起来如下: public static void main(String[] args) throws Exception { // starting Chrome Webdriver server ChromeDriverService service = new ChromeDriverService.Builder() .usingDriverExecutable(new File(“D:\\Development\\chromedriver\\chromedriver.exe”)) .usingAnyFreePort() .build(); service.start(); WebDriver driver = new CustomRemoteWebDriver(service.getUrl(),DesiredCapabilities.chrome()); driver.get(“http://www.google.com”); WebDriver driver2 = new CustomRemoteWebDriver(service.getUrl(),DesiredCapabilities.chrome()); // here I am expecting www.google.com from last driver instance, because it […]