将 Regex 与 selenium 驱动程序标签选择器一起使用
Use Regex with selenium driver tag selectors
我正在尝试配置正则表达式以查找具有此类属性的所有元素。
HTML 标签类似于:
<img class="my-img-12">
其中最新的 2 个数字总是不同的。
我尝试了这些方法,但似乎都没有用:
List<WebElement> allElement = driver.findElements(By.cssSelector("img[class^='my-img-\d{1,}']"));
或
List<WebElement> allElement = driver.findElements(By.xpath(".//img[starts-with(@class, 'my-img-') and 'my-img-' = translate(@class, '0123456789', '') and string-length(@class) > 1])"));
这里推荐了最新的选项:Stack question
如果您正在考虑这个:
List<WebElement> allElement = driver.findElements(By.cssSelector("img[class^='my-img-']"));
它不会起作用,因为可能有这样的属性:
<img class="my-img-wordsOccurrences">
您可以尝试使用 XPath 包含:
List<WebElement> allElement = driver.FindElements(By.Xpath(".//<define root element here>[contains(@class, 'my-img-')]")
我正在尝试配置正则表达式以查找具有此类属性的所有元素。 HTML 标签类似于:
<img class="my-img-12">
其中最新的 2 个数字总是不同的。 我尝试了这些方法,但似乎都没有用:
List<WebElement> allElement = driver.findElements(By.cssSelector("img[class^='my-img-\d{1,}']"));
或
List<WebElement> allElement = driver.findElements(By.xpath(".//img[starts-with(@class, 'my-img-') and 'my-img-' = translate(@class, '0123456789', '') and string-length(@class) > 1])"));
这里推荐了最新的选项:Stack question
如果您正在考虑这个:
List<WebElement> allElement = driver.findElements(By.cssSelector("img[class^='my-img-']"));
它不会起作用,因为可能有这样的属性:
<img class="my-img-wordsOccurrences">
您可以尝试使用 XPath 包含:
List<WebElement> allElement = driver.FindElements(By.Xpath(".//<define root element here>[contains(@class, 'my-img-')]")