gpt4 book ai didi

java - 使用 Selenium WebDriver 的带有 contains() InvalidSelectorException 的 CSS 定位器

转载 作者:塔克拉玛干 更新时间:2023-11-03 04:41:23 25 4
gpt4 key购买 nike

我正在学习 Selenium Webdriver 并尝试编写一个简单的测试脚本。

目的是获取About Google Gmail 页面上的链接以练习 CSS 定位器

代码如下:

public class GoogleSearch {

public static void main(String[] args) {
WebDriver driver = new FirefoxDriver();
driver.get("https://www.gmail.com");

WebElement aboutGoogle = driver.findElement(By.cssSelector("a:contains('About Google')"));

driver.close();
driver.quit();
}
}

我得到下面提到的异常:

Exception in thread "main" org.openqa.selenium.InvalidSelectorException: The given selector a:contains('About Google') is either invalid or does not result in a WebElement. The following error occurred:
InvalidSelectorError: An invalid or illegal selector was specified
Command duration or timeout: 356 milliseconds
For documentation on this error, please visit: http://seleniumhq.org/exceptions/invalid_selector_exception.html
Build info: version: '2.45.0', revision: '32a636c', time: '2015-03-05 22:01:35'
System info: host: 'XXXXX', ip: '127.0.1.1', os.name: 'Linux', os.arch: 'amd64', os.version: '3.13.0-49-generic', java.version: '1.7.0_79'
*** Element info: {Using=css selector, value=a:contains('Need')}
Session ID: 0f1869f8-c59a-4f61-b1c7-b34ada42573f
Driver info: org.openqa.selenium.firefox.FirefoxDriver

我已经检查并能够使用相同的定位器在 Selenium IDE 中找到该元素。

我在某处读到 findElement()方法正在返回一个 DOM 节点,代码需要一个 WebElement 对象。

如果是这种情况,是否有解决方法/转换?

有什么建议吗?

最佳答案

主要问题出在这一行:

driver.findElement(By.cssSelector("a:contains('About Google')"));

css 不为 Selenium WD 维护 contains() - See here .

要使用 contains(),您必须使用 Xpath .

使用 Xpath 您的定位器将是:

//a[contains(text(), 'About Google')]

对于驱动程序,它将是:

driver.findElement(By.xpath("//a[contains(text(), 'About Google')]"));

要查找与 Selenium 的链接,您可以使用:

driver.findElement(By.linkText("your link name here"));

Xpath 相比,这是 CSS 选择器的限制:

  • 不能使用 CSS 选择器获取父元素(Xpath 有 XPath 轴)
  • 您不能使用包含(它只是 XPath 特权)。

顺便说一下
要处理页面中的 Xpath 定位器,您可以使用 Firefox 浏览器的扩展程序:

关于java - 使用 Selenium WebDriver 的带有 contains() InvalidSelectorException 的 CSS 定位器,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/29999630/

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