下面是使用Firebug检查元素时的情况:
当我在XPath表达式中尝试相同的语法时,它选择结果页2。我在Selenium IDE中尝试了相同的方法,并单击了find。它选择结果页2。但是,在执行代码时,我得到了No Such Element异常
XPath语法://a[contains(@href,'/jobs?q=qa+engineer&l=Renton%2C+WA&start=10')]/span[contains(@class,'pn')][text()='2']
public void jobSearch(){
WebDriver driver= new FirefoxDriver();
driver.get("https://www.indeed.com");
driver.findElement(By.id("what")).sendKeys("QA Engineer");
driver.findElement(By.id("where")).clear();
driver.findElement(By.id("where")).sendKeys("Seattle,WA");
driver.findElement(By.id("fj")).click();
driver.manage().timeouts().implicitlyWait(25, TimeUnit.SECONDS);
driver.findElement(By.xpath("//a[contains(@href,'/jobs?q=qa+engineer&l=Renton%2C+WA&start=10')]/span[contains(@class,'pn')][text()='2']")).click();
3条答案
按热度按时间kyvafyod1#
实际上有三个错误:
1.犯了***大***错误:脚本无法找到下一页的可见选项。
在给定的屏幕截图中,运行给定代码时的结果。这就是脚本无法找到元素的原因。
Selenium WebDriver脚本仅适用于 * 可见区域 *。
解决方法:
添加向下滚动网页的步骤:
2
num页面的任何URL。因此,更改如下所示://div[@class='pagination']//span[text()='2']
1.有一些中断,如弹出的、基于区域的URL。因此编写如下代码以消除将来的错误:
注意:请阅读GeckoDriver for Firefox和Chromedriver for Chrome浏览器与Selenium 3.0+版本。
gr8qqesn2#
因为此时DOM中可能尚未加载该元素,而您在搜索该元素后使用了wait语句。
但是wait语句必须在操作和搜索元素之前添加。
j13ufse23#
请尝试使用以下XPath表达式:
**注意:**2 -用于 * 第二页链接 *。根据需要的页码更改它。