当前位置: 首页 > 面试题库 >

使用Selenium WebDriver的包含contains()InvalidSelectorException的CSS定位器

师向文
2023-03-14
问题内容

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

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

这是代码:

import org.openqa.selenium.By;
import org.openqa.selenium.WebDriver;
import org.openqa.selenium.WebElement;
import org.openqa.selenium.firefox.FirefoxDriver;

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对象。

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

有什么建议?


问题答案:

包含文本的CssSelector在脚本中不起作用,但在Selenium IDE中起作用。

还有一个是,它不适用于gmail
..等网站。您可以使用http://seleniumtrainer.com/中的组件进行学习。它对启动很有好处。

谢谢



 类似资料:
  • 问题内容: 如何将div定位到包含div的底部? 此代码将文本“放入”置于页面底部。 问题答案: 需要是 绝对定位会在DOM中寻找最接近的相对定位的父对象,如果未定义,它将使用主体。

  • 我一直在为selenium Xpath定位器使用Contains函数。到目前为止,这个功能一直有效。它目前不适用于表中的TD元素。我正在向函数发送正确的文本,所以我不明白为什么。 在Chrome上,转到此处:https://rcpsc.releasecandidate-community360qa.net/login.aspx?action=enablelogin 登录:mj4/test 向下滚动

  • 我每晚通过詹金斯进行测试。大约95%的时间都是这样。但偶尔它会失败: 使用org.openqa.selenium.InvalidSelectoreXception。注意:这几乎总是有效的。 它会发现并突出它。当我从调试外壳执行 我明白 所以我想我应该得到所有的div并得到他们的ID: 我得到了 所以好吧。我尝试driver.findelement(by.xpath(“//*”))并仍然得到Inva

  • 问题内容: 使用条件注释,可以使用特定于浏览器的CSS规则轻松定位Internet Explorer: 有时,行为不当的是Gecko引擎(Firefox)。 什么是将CSS规则仅定位到Firefox而不是其他浏览器的最佳方式? 也就是说,Internet Explorer不仅应该忽略仅Firefox的规则,而且WebKit和Opera也应该忽略它们。 注意: 我正在寻找一种“干净”的解决方案。在我

  • 问题内容: 有没有办法使CSS选择器与以下内容匹配? 选择器 不起作用,因为它匹配PARAM,而不是对象。我想将{display:none}应用于对象;将其应用于PARAM毫无用处。 (我知道我可以使用jQuery-和VanillaJS- 做到这一点,但我正在尝试在页面上创建CSS规则。) 问题答案: 不,您要查找的内容称为 父选择器 。CSS没有?已经多次提出了这些建议,但我不知道包括它们在内的

  • 问题内容: 我的代码有问题。因为我要为页面包括全局字体,所以我下载了.ttf文件。我将其包含在我的主要CSS中,但是我的字体不会改变。 这是我的简单代码: 我不知道我哪里出了错。你能帮我吗?谢谢。 问题答案: 仅为webfont提供.ttf文件不足以支持跨浏览器。目前最好的组合是使用以下组合: 此代码假定您的webfont具有.eot,.woff,.ttf和svg格式。要使所有这些过程自动化,您可