【问题标题】:Page Object Model - drop down menu页面对象模型 - 下拉菜单
【发布时间】:2020-05-23 17:47:48
【问题描述】:

我有一个基于旧 javascript 代码的网站。

它有两个部分和单个 URL,在任何交互后都不会改变。 主要部分 - 显示一些可以单击或输入一些数据的选项。 另一个部分 - 只是下拉。可能除了一些静态内容之外什么都没有。此下拉部分基于主要部分页面。

一般来说,调用顺序可以是 1. 在页面的主要部分点击一些东西。下拉部分没有任何内容 2.现在下拉部分更改。在那里选择一些东西。主要部分的变化 3. 输入数值并点击主要部分。在下拉部分更改 4.下拉选择。主要部分的更新 5.等等

我正在使用页面对象模型 我为每个页面的主要部分创建了页面对象

这里的问题是 如何处理下拉。这个下拉菜单在大部分页面上都在变化。 基本上有下拉或什么都没有。

请记住,虽然 HTML 会根据交互而发生变化,但 URL 不会发生变化。 谢谢

【问题讨论】:

  • 代码试验?相关的HTML?有什么错误吗?
  • Error is nullpointer exception for RemoteWebDriver.findElement..question 更多的是关于页面对象如何具体工作。@FindBy...因为网站 URL 没有变化。但是页面上的元素在交互后会发生变化.那么是否有刷新或我每次都需要创建新对象

标签: java selenium


【解决方案1】:

我建议您遵循以下方式: 1. 使用@FindBy 仅创建下拉菜单的父元素。 2.在方法中使用这个元素,处理下拉列表+所需子元素的路径,F.E:

html 中的下拉菜单:

<span id="mainDropDown">
  …..
   <span index="3">Item to click</span>
</span>

Java 代码(由于我现在在其他框架中编码,可能有错误):

@FindBy(id="mainDropDown")
private WebElement dropDown;
public void expandDropdown(){
    dropDown.Click();
    werifyIfExpand();
}

publick void selectItemByIndexValue(int index){
    dropDown.findElement(By.xpath(".//span[@index= '" + index + "']"));
}

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2013-05-22
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多