我正在使用python中的硒编写测试脚本。我有一个网页,
我想遍历菜单以转到所需的目录。相应的加/减适应症HTML代码是这样的:
<a onclick="changeTree('tree', 'close.gif', 'open.gif');"> <img id="someid" src="open.gif" /> </a>
The src 图像的属性可以是 open.gif or close.gif.
src
open.gif
close.gif
我可以通过简单地检查标签的 src属性来检测天气的正负 img 我也可以很容易地访问父标签, a, by using .find_element_by_xpath("..").
img
a
.find_element_by_xpath("..")
The problem is that I can’t perform the click action not on the img nor the a tag.
I’v tried webdriver.Actions(driver).move_to_element(el).click().perform(); but it did not work.
webdriver.Actions(driver).move_to_element(el).click().perform()
我想我应该提到的是,访问元素没有问题, 因为我可以打印它们的所有属性。我只是无法对它们执行操作。 有什么帮助吗?
编辑1:
这是用于折叠和展开树的js代码:
function changeTree(tree, image1, image2) { if (!isTreeviewLocked(tree)) { var image = document.getElementById("treeViewImage" + tree); if (image.src.indexOf(image1)!=-1) { image.src = image2; } else { image.src = image1; } if (document.getElementById("treeView" + tree).innerHTML == "") { return true; } else { changeMenu("treeView" + tree); return false; } } else { return false; } }
EDIT 2:
我在Google上搜索了几个小时,发现从Java驱动程序触发Javascript事件和click操作存在问题。另外span,我的网页上有一个带有onclick事件的标签,并且上面也有这个问题。
经过诸如 .execute_script("changeTree();"), .submit(), 等的尝试,我 已经通过使用 ActionChains 类解决了该问题。现在,我可以单击 具有Java脚本事件的所有元素作为 onclick. 我使用的代码是这样的:
.execute_script("changeTree();")
.submit()
ActionChains
onclick
from selenium import webdriver driver = webdriver.Firefox() driver.get('someURL') el = driver.find_element_by_id("someid") webdriver.ActionChains(driver).move_to_element(el).click(el).perform()
我不知道它是发生在我身上还是发生在我身上,但我发现我应该 在键盘命令之前找到该元素。否则脚本将不 执行该操作。我认为这可能与陈旧元素或 类似的东西有关;无论如何,感谢大家的关注。