我尝试使用Selenium从谷歌收集一些结果但是我使用的CssSelector一直在返回"没有找到任何元素"。
这是我的代码。
//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&client=firefox-a&hs=YWQ&rls=org.mozilla:en-US:official&source=lnms&tbm=isch&sa=X&ei=ewL9U-S5FNGpyATTl4CgCA&ved=0CAgQ_AUoAQ">Images</a>
出了什么问题?
答案 0 :(得分:0)
我认为在link by text获取更可靠,更明确:
IWebElement image_link = driver.FindElement(By.LinkText("Images"));
答案 1 :(得分:0)
你没有将css选择器传递给css类。你传递了一个按属性过滤的元素选择器。尝试:
By.CssSelector(".q.qs")
答案 2 :(得分:0)
https://www.simple-talk.com/dotnet/.net-framework/xpath,-css,-dom-and-selenium-the-rosetta-stone/
参考以上链接。 试试这段代码。
IWebElement image_link = driver.FindElement(By.CssSelector("a.q qs"));
使用xpath
IWebElement image_link = driver.FindElement(By.Xpath("//a[@class='q qs']"));