Tag: selenium

如何使用Selenium WebDriver和Java获取选定的选项

我是Selenium的新手,我被困在这里: 我想使用Selenium WebDriver 获取 下拉列表 的选定标签或值,然后在控制台上打印 。 我可以从下拉列表中选择任何值,但我无法检索所选值并将其打印出来。 Select select = new Select(driver.findElement(By.id(“MyDropDown”))).selectByVisibleText(data[11].substring(1 , data[11].length()-1)); WebElement option = select.getFirstSelectedOption(); 但我所有的努力都是徒劳的任何帮助都将受到赞赏。 提前致谢 :)

如果已加载所需元素,请使Selenium Webdriver停止加载页面?

我正在创建一个测试并遇到一些问题。 这是场景。 我使用Selenium Web驱动程序在Page1上填写表单,然后单击按钮提交表单。 第2页开始加载…但问题是,Page2使用Google Analytics代码,有时页面停止加载需要一整年。 即使预期的元素已经存在,Selenium Web驱动程序也不会继续,直到整个网页完全加载。 如果预期元素已存在,如何让Selenium继续下一个任务或停止加载外部javascript / css? 我尝试调整以下设置但没有运气。 driver.manage().timeouts().pageLoadTimeout(60, TimeUnit.SECONDS); driver.manage().timeouts().setScriptTimeout(30, TimeUnit.SECONDS); driver.manage().timeouts().implicitlyWait(10, TimeUnit.SECONDS); 临时解决方案:滚动下面的答案!

如何实现可以返回不同PageObjects的WebDriver PageObject方法

我刚刚开始使用WebDriver ,我正在尝试学习最佳实践,特别是使用PageObjects和PageFactory 。 我的理解是,PageObjects应该在网页上公开各种操作,并将WebDriver代码与测试类隔离开来。 通常,相同的操作可能导致根据所使用的数据导航到不同的页面。 例如,在此假设的登录方案中,提供管理员凭据会将您带到AdminWelcome页面,并且提供客户凭据会将您带到CustomerWelcome页面。 所以实现这个的最简单方法是公开两个返回不同PageObjects的方法…… 登录PageObject package example; import org.openqa.selenium.WebDriver; import org.openqa.selenium.WebElement; import org.openqa.selenium.support.FindBy; import org.openqa.selenium.support.PageFactory; public class Login { @FindBy(id = “username”) private WebElement username; @FindBy(id = “password”) private WebElement password; @FindBy(id = “submitButton”) private WebElement submitButton; private WebDriver driver; public Login(WebDriver driver){ this.driver = driver; } public AdminWelcome loginAsAdmin(String user, String […]

如何在文本框中找到并键入内容

public class testFluent { WebDriver driver; @Before public void setUp(){ driver = new FirefoxDriver(); driver.manage().window().maximize(); driver.manage().deleteAllCookies();} @Test public void myFirstFluent(){ WebElement element; driver.get(“http://www.yahoo.com”); element = myDynamicElement(By.id(“//*[@id=’p_13838465-p’]”)); System.out.println(“Element found”); } public WebElement myDynamicElement(final By locator){ Wait wait = new FluentWait(driver) .withTimeout(10, TimeUnit.SECONDS) .pollingEvery(100, TimeUnit.MILLISECONDS) .ignoring(NoSuchElementException.class); WebElement element = wait.until(new Function(){ public WebElement apply(WebDriver drv){ return drv.findElement(By.id(locator)); […]

如何捕获webdriver中页面发出的所有请求? Browsermob还有其他选择吗?

我正在使用Selenium2 / WebDriver来测试我的Web应用程序。 所有测试都是用Java编写的,并与Maven一起运行。 在使用webdriver打开页面时,我想捕获页面发出的所有请求(图像,js和css文件等)。 我使用这些数据主要有两个原因 检查呼叫中的404(以及其他错误) 检查分析代码是否正常工作(检查它是否正在发送正确的请求) 根据项目,我使用Firebug和Netexport或Browsermob代理。 在这两种情况下,我都可以轻松获取HAR(Html ARchive)文件,解析它并提取我想要的数据。 问题在于:我对这些解决方案都不满意。 当页面包含加载太长时间的video时,我特别遇到获取HAR文件的问题。 我正在寻找更稳定的东西。 所以,问题是: Browsermob还有其他选择吗? 我知道FiddlerCore,但它是一个.NET库,我的测试是用Java编写的。 我也听说过Ajax DynaTrace,我知道有一些方法可以将它与Selenium集成,但我发现的文档是Selenium-RC而不是WebDriver。 有没有办法将DynaTrace与WebDriver集成或使用FiddlerCore与Java? 有没有其他方法来实现我提到的目标? 我正在寻找一个可以从我的代码中轻松控制的代理。 将数据导出到HAR将是一个很好的选择。

NoClassDefFoundError:Selenium for ChromeDriver中的org / apache / http / HttpEntity?

当我尝试从该网站访问数据时,我正试图从使用Selenium自动化的网站获取数据 run: Starting ChromeDriver (v2.9.248315) on port 15621 Exception in thread “main” java.lang.NoClassDefFoundError: org/apache/http/entity/ContentType at org.openqa.selenium.remote.HttpCommandExecutor$EntityWithEncoding.(HttpCommandExecutor.java:411) at org.openqa.selenium.remote.HttpCommandExecutor.execute(HttpCommandExecutor.java:306) at org.openqa.selenium.remote.service.DriverCommandExecutor.execute(DriverCommandExecutor.java:66) at org.openqa.selenium.remote.RemoteWebDriver.execute(RemoteWebDriver.java:568) at org.openqa.selenium.remote.RemoteWebDriver.startSession(RemoteWebDriver.java:240) at org.openqa.selenium.chrome.ChromeDriver.startSession(ChromeDriver.java:181) at org.openqa.selenium.remote.RemoteWebDriver.(RemoteWebDriver.java:126) at org.openqa.selenium.remote.RemoteWebDriver.(RemoteWebDriver.java:139) at org.openqa.selenium.chrome.ChromeDriver.(ChromeDriver.java:160) at org.openqa.selenium.chrome.ChromeDriver.(ChromeDriver.java:149) at org.openqa.selenium.chrome.ChromeDriver.(ChromeDriver.java:106) at pocmandi.PocMandi.main(PocMandi.java:32) Caused by: java.lang.ClassNotFoundException: org.apache.http.entity.ContentType at java.net.URLClassLoader$1.run(URLClassLoader.java:366) at java.net.URLClassLoader$1.run(URLClassLoader.java:355) at java.security.AccessController.doPrivileged(Native Method) at java.net.URLClassLoader.findClass(URLClassLoader.java:354) at java.lang.ClassLoader.loadClass(ClassLoader.java:425) at sun.misc.Launcher$AppClassLoader.loadClass(Launcher.java:308) […]

如何在java中编写测试用例

嗨,我创建了一个类ABC.java,并有一个构造函数ABC()如下: public class ABC { private static String host; private static String port; —— public ABC(){ try { File file = new File(“Element.xml”); DocumentBuilderFactory dbf = DocumentBuilderFactory.newInstance(); DocumentBuilder db = dbf.newDocumentBuilder(); Document doc = db.parse(file); 我传递Element.xml作为输入,我想测试这个类,所以我创建了ABCTest类,请告诉我如何为构造函数ABC()编写测试用例以及如何编写assert(),用于上面的代码

Webdriver – 如何检查浏览器是否仍然存在或仍然打开?

我想检查浏览器是否仍然存在,如果不存在,那么我想打开一个新的浏览器! webdriver中是否有api可用于检查浏览器是否仍然存在?

尝试打印链接名称时获取StaleElementReferenceException

我正在尝试打印谷歌搜索中显示的前5页链接..但是获取StateElementReferenceException不确定哪个出错了.. public class GoogleCoInTest { static WebDriver driver = null; public static void main(String[] args) throws InterruptedException { System.setProperty(“webdriver.gecko.driver”, “D:\\bala back up\\personel\\selenium\\Jars\\Drivers\\geckodriver.exe”); driver=new FirefoxDriver(); driver.manage().window().maximize(); driver.manage().timeouts().implicitlyWait(10, TimeUnit.SECONDS); driver.get(“https://www.google.co.in/”); //driver.findElement(By.xpath(“//input[class=’gsfi’]”)).sendKeys(“Banduchode”);; WebElement search=driver.findElement(By.cssSelector(“input#lst-ib”)); search.sendKeys(“Banduchode”); search.sendKeys(Keys.ENTER); printLinksName(); List fiveLinks=driver.findElements(By.xpath(“.//*[@id=’nav’]/tbody/tr/td/a”)); for(int i=0;i<5;i++){ System.out.println(fiveLinks.get(i).getText()); fiveLinks.get(i).click(); Thread.sleep(5000); printLinksName(); } } public static void printLinksName() throws InterruptedException{ List allLinks=driver.findElements(By.xpath(“//*[@id=’rso’]/div/div/div/div/div/h3/a”)); System.out.println(allLinks.size()); //print all […]

检查Selenium Java中是否可以单击元素

我是Selenium新手,需要检查元素是否可以在Selenium Java点击,因为element.click()会在link和label上传递。 我尝试使用下面的代码,但没有工作: WebDriverWait wait = new WebDriverWait(Scenario1Test.driver, 10); if(wait.until(ExpectedConditions.elementToBeClickable(By.xpath(“(//div[@id=’brandSlider’]/div[1]/div/div/div/img)[50]”)))==null) 需要帮助。