我正在使用@FindBy注释来定位WebElements。但是我想在方法中使用这些WebElement作为参数。只有在页面上找到WebElement,我才能成功地使用它。但如果我想等待它,我必须使用By(使用相同的定位器)。
例如。
private static final String SEARCHFIELD_LOC = "#search input[placeholder]";
@FindBy(css = SEARCHFIELD_LOC)
public WebElement searchField;
public By searchField_by = new By.ByCssSelector(SEARCHFIELD_LOC);
这样,我就可以在某些方法中使用这个WebElement作为By对象,比如
public boolean isElementDisplayedWithWait(final By by) { .... }
对于每个元素,我有4行代码。我很懒,正在寻找一种简化的方法。
在QAF(以前称为ISFW)中的扩展webelement中可以使用webelement本身的等待/断言/验证方法。例如:
@FindBy(css = SEARCHFIELD_LOC)
public WebElement searchField;
searchField.waitForPresent();
searchField.assertPresent(); //auto wait
searchField.verifyPresent(); //auto wait
参考:
我找到了完全不同的解决办法。我将我的定位器存储为字符串。
public String searchField = ".slide.slide_search input[placeholder]"
所以每个定位器只有一行代码。我希望只支持CSS定位器就足够了。我不会使用@FindBy获取WebElements。相反,我将使用特殊的方法获取WebElements,该方法将等待element并记录正在发生的事情。我将实现如下方式获取WebElement:
WebElement we = wait.until(ExpectedConditions.visibilityOfElementLocated(new By.ByCssSelector(locator)));
等待在哪里
Wait<WebDriver> wait = new FluentWait<WebDriver>( driver )
.withTimeout(timeout, TimeUnit.SECONDS)
.pollingEvery(1, TimeUnit.SECONDS)
.ignoring( StaleElementReferenceException.class ) ;
问题内容: 如何从HashMap的位置检索元素,这有可能吗? 问题答案: HashMap不保留排序: 此类无法保证地图的顺序。特别是,它不能保证顺序会随着时间的推移保持恒定。 看一下LinkedHashMap,它保证了可预测的迭代顺序。
问题内容: 我期待的是类似WebElement.isfocus()的东西,…确实很简单,但是我发现的唯一方法是使用 伪类。 这真的是不常见的任务,例如找不到大量信息吗? 我知道这个SO主题,但是距那时已经快两年了。最新版本中没有新内容吗? 您知道一些解决方法吗? 问题答案: 还有另一个主题涉及这个问题:使用SeleniumWebdriver测试元素是否为焦点 基本上,代码将是
我使用了以下代码, 这会引发错误“表达式不是合法表达式”。“代码:“12”nsresult:“0x805b0033(SyntaxError)”位置:”“]”。 当我缩小搜索范围到 它工作正常,我得到了特定行中的所有文本。然而,当我将其扩展到特定于第1个代码中所示的列时,我得到了错误。 html代码段,
我计划开发一个基于web的聊天应用程序,它接收ReSTful请求,将它们转换为XMPP,并将它们发送到XMPP服务器。 在这种基于聊天的应用程序中使用WebSocket看起来很有希望,因为事件(或响应)可以异步传递。但是,如果我使用WebSocket作为从浏览器传输请求的底层协议,这仍然可以被视为ReSTful设计吗?如果是的话,URI、动词(GET、POST…)是怎样的,websocket消息中
问题内容: 有没有一种方法可以检查垃圾收集器是否可以提取对象? 在我的代码中的某个地方,我有一个对象的引用: 然后,通过Eclipse Debugger,获得对象的存储位置。之后,我将引用设置为null: 有什么方法可以检查以前引用的对象现在是否适合垃圾回收,或者是否有其他引用? 非常感谢, 斯特凡 问题答案: 您无法在运行时使用任意对象执行此操作,实际上,不可能完全确定地执行此操作。但是,有两种
问题内容: 我正在尝试从Wikipedia主页提取所有链接,但是此代码显示TypeError:“ WebElement”对象不是可迭代的错误。 问题答案: 问题是您正在使用哪个仅返回一个WebElement(不可迭代),即返回一个WebElement列表。 解决方案:替换为 参考:Selenium-Python文档