我在做:
driver = new webdriver.Builder()
.forBrowser('safari')
.build();
var referrer = 'http://localhost:3000/tours/hood-river';
// console.log(referrer);
driver.get(referrer);
driver.findElement(By.id('requestGroupRate')).click();
//requestGroupRate is a link, so clicking it should move it to a new page
driver.wait(function(){
return driver.findElement(By.id('myThing')).then(function(element){
console.log("hereere");
assert(element.value === referrer);
done();
});
},10000);
我发现findElement(By.id('myThing'))
失败,即使它应该在的页面上显然有'myThing'。但是,如果我将行更改为
driver.findElement(By.id('requestGroupRate'))..
然后找到元素!这让我相信,click()不会导致驱动程序导航到链接。
编辑:我试图点击的链接:
<a id="requestGroupRate"
href="/tours/request-group-rate">Request Group Rate.</a>
答案 0 :(得分:0)
根据acdcjunior的建议,如果元素是可点击的,请使用浏览器开发者工具。 Chrome是一个侧面板,Firefox是HTML标签末尾的标记。
我遇到了让Selenium点击GIS地图的问题。在这种情况下,我使用替代方案(将需要将此Java转换为Javascript):
((JavascriptExecutor) driver).executeScript("document.getElementById('map_container').dispatchEvent(new Event('click'));");
还建议在浏览器开发者控制台中测试您的xpath:
document.evaluate(".//tagName[@id='Query']", document,null, XPathResult.ANY_TYPE, null).iterateNext();
或者在浏览器开发者控制台中测试你的cssSelector:
document.querySelector('#idtext')
答案 1 :(得分:0)
您可以在click()之后添加driver.sleep(10000)以进行调试。
如果页面发生了变化,意味着链接和click()工作,并且当脚本点击链接时可能失败的原因是页面仍在加载,因此浏览器无法响应点击事件。
然后你可以在browser.get()之后移动driver.sleep(10000)来看click()是否可以工作。