可以';t使用CSS选择器查找链接

本文关键字:CSS 选择器 查找 链接 使用 可以 | 更新日期: 2023-09-27 18:19:28

我试图使用Selenium从谷歌上收集一些结果,但我使用的CsSelector一直返回"No element found"。

这是我的密码。

//Open google page
IWebDriver driver = new FirefoxDriver();
WebDriverWait wait = new WebDriverWait(driver, TimeSpan.FromSeconds(10));
driver.Navigate().GoToUrl("https://www.google.com/search?q=cheese");
wait.Until(driver1 => ((IJavaScriptExecutor)driver).ExecuteScript("return document.readyState").Equals("complete"));
//Get image link
IWebElement image_link = driver.FindElement(By.CssSelector("a[class='q qs']"));

异常发生在最后一行,我试图获得的锚在网页上也是这样写的。

<a class="q qs" href="/search?q=cheese&amp;client=firefox-a&amp;hs=YWQ&amp;rls=org.mozilla:en-US:official&amp;source=lnms&amp;tbm=isch&amp;sa=X&amp;ei=ewL9U-S5FNGpyATTl4CgCA&amp;ved=0CAgQ_AUoAQ">Images</a>

怎么了?

可以';t使用CSS选择器查找链接

您没有将css类传递给css选择器。您正在向它传递一个按属性筛选的元素选择器。尝试:

By.CssSelector(".q.qs")

https://www.simple-talk.com/dotnet/.net-framework/xpath,-css,-dom和硒玫瑰塔石/

请参阅以上链接。试试这个代码。

IWebElement image_link = driver.FindElement(By.CssSelector("a.q qs"));

使用xpath

IWebElement image_link = driver.FindElement(By.Xpath("//a[@class='q qs']"));

我认为通过文本获取链接会更加可靠和明确这里是:

IWebElement image_link = driver.FindElement(By.LinkText("Images"));