我的测试网站有这样的元素:
<a href="http://t.qq.com/p/t/148892114342486" class="comt" num="1">评论</a>
有一些javascript与标签挂钩,所需的行为是在点击标签时,浏览器不会去任何地方而是停留在同一页面,打开评论textarea供用户输入。
但是在selenium中,两者都发生了,textarea被打开,浏览器将导航到href指向的页面,这对于我的selenium脚本来说不是理想的结果。
如何避免这种情况?
我正在考虑将href属性更改为“#”以避免此类问题,但看起来selenium本身无法更改网页中的元素,这是真的吗?
我的python selenium脚本:
ask = driver.find_element_by_xpath("//a[@class='comt']")
ask.click()
答案 0 :(得分:0)
正如上面用户所评论的......因为JS与超链接上的点击事件挂钩。
然后建议直接触发JavaScript事件,而不是专注于超链接上的点击事件..
从您评论的上面的网址中,我采用了以下元素
<a title="" onmousedown="MI.Bos('btnVaryEntrance1')" onclick="vary('yilanyeh','叶怡兰');" href="javascript:void(0)">
它有一个JS函数 vary('yilanyeh','叶怡兰') 挂钩Click事件...所以我的代码看起来像这样(C#代码)< / p>
IWebDriver driver = new InternetExplorerDriver();
driver.Manage().Timeouts().ImplicitlyWait(TimeSpan.FromSeconds(10));
driver.Navigate().GoToUrl("http://t.qq.com/yilanyeh");
IJavaScriptExecutor jr = (IJavaScriptExecutor)driver;
jr.ExecuteScript("vary('yilanyeh','叶怡兰');");