可以';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&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>
怎么了?
您没有将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"));