我正在尝试使用xpath浏览网页,但我得到了一些混合结果。这是我正在使用的:driver.findElement(By.xpath("//div[contains(@class,'x-grid3-cell-innerx-grid3-col-0')]"));这实际上很好用,但我遇到的问题是:9230092475924769230192474当我在我的Selenium测试中运行那个xpath时,我总是得到第一个div。如何编辑我的xpath以检索第4个div(92301)或不是列表中第一个的其他一些div? 最佳答案 使用这个XPath
我一直在使用SeleniumWebDriver为我参与的一些项目实现功能测试。我正在尝试将页面对象设计模式与页面工厂一起使用来分解我的定位器。我还创建了一个静态WaitTool对象(单例),它使用可选的超时参数实现了多种等待技术。我当前的问题是我想在PageFactory尝试初始化WebElements之前使用我的等待方法。我想等待的原因是PageFactory可能会在页面元素可用之前尝试初始化页面元素。这是一个示例PageObject:publicclassSignInPageextendsPageBase{@FindBy(id="username")@CacheLookuppriv
我不确定我是否理解缓存原理:@CacheLookup@FindBy(how=How.ID,using=namespace+signifLvl)privateWebElementsigLvl;如果我们使用这种Annotation方式,将使用ElementLocator并且第一次引用该字段时,元素会被driver.findElement(by)找到并通过ElementLocator缓存,以便下次使用我们引用它,它是从缓存中返回的。它看起来取决于ElementLocator和PageObject实例的生命周期。此外,它与直接driver.findElement(By);调用无关。我假设Web
我重构了我的java项目以将WebElement选择器定义为By常量。这允许我将By常量传递到我的findElement方法中,而不需要在方法中评估By选择器类型。这是一个好主意吗?如果将By变量定义为publicstaticfinal常量,我可能会遇到什么问题?示例如下:publicstaticfinalByLOGIN_BUTTON_SELECTOR=By.cssSelector("input[name='logIn']");/***clicktheLoginbutton*/publicvoidclickLoginButton()throwsTimeoutException,Stal
考虑以下场景,网页与垂直滚动条一起显示底部有滚动条WebElement“测试”出现在页面顶部,现在在当前视口(viewport)中不可见。待验证的功能:单击页面底部的“转到顶部”链接应滚动页面,以便WebElement“测试”显示在视口(viewport)中。请告诉我如何使用WebDriver验证元素是否显示在当前视口(viewport)中。注意:在上述情况下,element.isDisplayed将始终为真,因为该函数会检查整个页面,而不是仅检查当前视口(viewport)。 最佳答案 @VelGanesh-我不知道这是否可以使用
我有一个类为a的元素。所以,在Selenium代码中,我得到了这个:WebElementelement=driver.findElement(By.cssSelector(".a"));然后我用element.click();点击它。单击事件从元素中删除类a-这正是我要执行的测试用例。所以,现在我想询问元素是否已经拥有这个类:element.getAttribute("class").contains("a");但这不起作用,因为WebElement试图通过给定的选择器再次找到该元素,这对我来说并不清楚。我认为一旦找到WebElement,就会在整个范围内进行内部复制。但显然,每次在代
我在网页上有一个按钮,当我通过IE运行时Webdriver不会点击它-我已经尝试了以下解决方法但没有成功-通过Javascript点击:((JavascriptExecutor)driver).executeScript("$(arguments[0]).click()",webElement)使用发送键:webElement.SendKeys(keys.Enter)使用Action生成器Actionstest=newActions(driver);test.moveToElement(webElement);test.clickAndHold();test.release();tes
我想知道调用WebElement的click()方法有什么区别?与通过id查找元素并使用JavaScript触发click事件相比。为了清楚起见,我在第一个方法中调用了WebElement实例的.click():myWebElement.click();第二种技术是:((JavascriptExecutor)driver).executeScript("document.getElementById('myElementID').click()");我很想知道这两种点击网络元素的技术之间的所有区别,以及每种技术的优缺点。 最佳答案
我使用SeleniumWebDriver3.14并在Chrome浏览器中执行测试。我需要在执行时间内测量页面的响应时间,以检查它是否低于预定义值。如果它大于此值,则应执行一些额外的操作。所以我需要不同于System.currentTimeMillis()的解决方案,因为这个值的检查应该在后台自动完成。它是一个类似于AJAX的窗口,因此当加载时间过长时,应该通过脚本将其关闭。窗口示例: 最佳答案 对此的典型解决方案是尝试/捕获而不是等待。例如。如果下一步是单击加载完成后显示的按钮:WebDriverWaitwait=newWebDri
我正在尝试使用Selenium(2.31.0,使用JavaSE1.6和IE9)在页面上查找一系列元素。这些元素都具有两个类名之一,“dataLabel”或“dataLabelWide”。目前,我的代码将这些元素收集在两个单独的ArrayList中,一个用于每个类名,然后将它们转换为数组并将它们组合成一个数组。但是,此方法乱序列出了元素,我需要它们按照在页面的HTML源代码中找到的相同顺序保留。我的代码的上述部分如下所示(添加了注释以进行解释)://ApplicationrunsonWebDriverd,anInternetExplorerDriver.//Afternavigating