最近做了一个页面爬取,很有意思被机缘巧合下解决了。
这个元素很奇怪,用xpath可以定位元素,但是就是click()不了。
试过了网上搜的一些办法:
//尝试一
WebElement a_tag = driver.findElement(By.xpath("xxx"));
a_tag.click();//点击不了,卡住
//尝试二
WebDriverWait wait = new WebDriverWait(driver, 100);
wait.until(ExpectedConditions.elementToBeClickable(a_tag)).click();//点击不了,卡住
//尝试三
Actions actions = new Actions(driver);
actions.moveToElement(a_tag).perform();
actions.click()//没报错,但实际没起作用
然后无意一次尝试,神奇的事情发生了:
//把action和a_tag结合起来用,先action.perform一下,不要点,再用a_tag点
WebElement a_tag = driver.findElementByXpath("xxx");
Actions actions = new Actions(driver);
actions.moveToElement(a_tag).perform();//action先perform一下,不要点
a_tag.click();//用元素点,顺利执行,并起作用
而且更神奇的是,只有这种组合(即先action.perform再a_tag.click)起作用,别的组合和顺序都不起作用。
虽然问题解决了,但是还不知道是什么原理。有大神了解吗?