gpt4 book ai didi

java - 如何在 java 中为 Selenium webdriver 编写我自己的自定义定位器?

转载 作者:搜寻专家 更新时间:2023-11-01 02:12:49 26 4
gpt4 key购买 nike

我想编写自己的定位器来访问元素。 WebDriver 的 API 目前提供八个定位器,允许通过 id、名称属性、标签名称、完整或部分链接文本、XPath、类名称和 css 选择器检索元素。但是,这些默认定位器现在对我来说还不够,因为我必须通过新属性访问元素。让我举一个例子,这样你就能明白我在这里真正想要的是什么。

例子:选择您的用户名:

现在我想编写代码,以便我可以使用 myLocator 定位器访问用户名按钮,例如:

*driver.findElement(By.myLocator("username")).*

如果有人能给我们一些好主意,我将如何重写 BY 类以添加我自己的定位器,这将非常有帮助。

预先感谢您的帮助。

最佳答案

使用 C#

using OpenQA.Selenium;
using System;
using System.Collections.Generic;
using System.Collections.ObjectModel;
using System.Linq;
using System.Text;
using System.Threading.Tasks;

public class ImageBy : By
{
public ImageBy(string imageByString)
{
FindElementMethod = (ISearchContext context) =>
{
IWebElement mockElement = context.FindElement(By.XPath("//img[@src='" + imageByString + "']"));
return mockElement;
};

FindElementsMethod = (ISearchContext context) =>
{
ReadOnlyCollection<IWebElement> mockElements = context.FindElements(By.XPath("//img[@src='" + imageByString + "']"));
return mockElements;
};
}
}

用法如下

[FindsBy(How = How.Custom, Using = @"/path/to/img", CustomFinderType = typeof(ImageBy) )]
private IWebElement MenuStartButton = null;

使用Java

import java.util.List;

import org.openqa.selenium.By;
import org.openqa.selenium.SearchContext;
import org.openqa.selenium.WebElement;

public class ByImageSrc extends By
{
private final String imageByString;
public ByImageSrc(String imageByString)
{
this.imageByString = imageByString;
}

@Override
public List<WebElement> findElements(SearchContext context)
{
List<WebElement> mockElements = context.findElements(By.xpath("//img[@src='" + imageByString + "']"));
return mockElements;
}
}

用法:

WebElement element = driver.findElement(new ByImageSrc("/path/to/image"));

关于java - 如何在 java 中为 Selenium webdriver 编写我自己的自定义定位器?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/14263483/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com