当前位置: 首页 > 知识库问答 >
问题:

从WebElement提取定位器并使用pagefactory

习哲彦
2023-03-14

我遵循一个页面对象模型,并使用一个基类,该基类具有所有通用和可重用的方法,并为我的web应用程序的每个页面提供单独的页面。

现在,我正在尝试在BasePage中创建一个可以在其他页面中使用的方法。在每个页面中,我都使用了页面工厂作为元素。

我在我的BaseClass中使用下面的方法,并且我坚持将定位器提取到下面的方法中,以便我可以在所有页面中针对不同的元素定位器使用此方法。

BasePage method:

    protected boolean CheckSorting(List<WebElement> element) {
        List<WebElement> issueTypeDropdown = new LinkedList<>(driver.findElements(By.)); // stuck here
        LinkedList<String> issueTypes = new LinkedList<String>();
        for (int i = 0; i < issueTypeDropdown.size(); i++) {
//            System.out.println(issueTypeDropdown.get(i).getText());
            issueTypes.add(issueTypeDropdown.get(i).getText());
        }
        return Compare(issueTypes);
    }

我被困在这里:

List<WebElement> issueTypeDropdown = new LinkedList<>(driver.findElements(By.)); // stuck here

我使用的页面中的PageFactory:

public @FindBy(xpath = "(//INPUT[@type='search'])[4]/following-sibling::UL") List<WebElement> List;

共有1个答案

毋承基
2023-03-14

我过去处理过这个问题,并且总是不得不求助于其他东西。如果您查看WebElement接口定义,则没有方法来获取用于定位元素的“By”。

这个问题对您的问题有两个答案:获取已找到的WebElement的By定位器

使用实现WebElement的类,将By和WebElement分开,并将By存储在自己的引用变量中。

根据我的经验,处理这种事情的最好方法是深入了解页面工厂的工作原理,并尝试创建自己的视图工厂,然后从那里定制您想要的任何东西。

我知道这不是一个很好的答案,但我想与大家分享,做这类事情的唯一方法是不使用页面工厂,或者创建自己的页面工厂。

干杯

 类似资料:
  • 问题内容: 是否有一种优雅的方法来获取我已经发现/识别的Selenium WebElement的“按”定位器? 要明确这个问题:我希望使用“按定位器”来查找元素。在这种情况下,我对特定属性或特定位置(如css-locator) 不 感兴趣。 我知道我可以解析WebElement的toString()方法的结果: 输出例如: [[FirefoxDriver:WINDOWS(....)上的Firefo

  • 有没有一种优雅的方法来获取我已经找到/识别的Selenium WebElement的By定位器? 为了明确这个问题:我想要用于查找元素的“通过定位器”。在这种情况下,我对特定的属性或特定的定位器(如css-locator)不感兴趣。 我知道我可以解析WebElement的toString()方法的结果: 例如,输出为: [[FirefoxDriver:WINDOWS上的firefox(..)]-

  • 用户上传包含班级、教授、时间表等信息的表格数据。 我想很容易地提取这些信息。 我可以使用OCR库,但它只会输出随机混合的文本。 我不知道什么东西属于什么。 有没有一种方法可以训练OCR只查看图像(表单)的特定部分,然后标记数据,这样当它提取数据时,所有数据都会被标记。等 假设我有一个有很多数据的表单,我希望它只看地址部分并标记它。 或者是类似电子表格的数据,我想让它按列标记。 简单地将所有文本提取

  • 我想摘录: 图像标记和 类数据内的锚标记文本 我成功地提取了img src,但从锚标记中提取文本时遇到了问题。 这是整个HTML页面的链接。 这是我的代码: 我试图做的是提取图像src(link)和div class=data中的标题,例如: 应提取: 尼康COOLPIX L26 16.1 MP数码相机,配备5倍变焦NIKKOR玻璃镜头和3英寸LCD(红色)

  • 我使用的是selenium pagefactory,并引入了一个注释@Name(Description=“Username”),用于所有WebElement。稍后,我需要在自定义方法中找到描述值,以便进行报告,例如: 我的@Name注释界面和pagefactory如下所示: 名称接口 在使用反射时,我面临的问题是需要定义pagefactory的类名,并提供字段名作为字符串“username”,以检

  • 问题内容: 我正在尝试使用BeautifulSoup提取此数据表的第一和第三列。通过查看HTML,第一列具有一个标记。感兴趣的另一列具有作为标记。无论如何,我所能获得的就是带有标签的列的列表。但是,我只想要文本。 已经是列表,所以我不能使用。我不确定如何以另一种形式获得第一列的清单。 问题答案: 您可以尝试以下代码: 如您所见,代码只是连接到url并获取html,BeautifulSoup找到第一