我正在使用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
属性来检测天气的正负 img
我也可以很容易地访问父标签, a
,
by using .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.
我想我应该提到的是,访问元素没有问题,
因为我可以打印它们的所有属性。我只是无法对它们执行操作。
有什么帮助吗?
编辑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
. 我使用的代码是这样的:
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()
我不知道它是发生在我身上还是发生在我身上,但我发现我应该
在键盘命令之前找到该元素。否则脚本将不
执行该操作。我认为这可能与陈旧元素或
类似的东西有关;无论如何,感谢大家的关注。
问题内容: 我有以下html元素: 我需要href属性,以便引导程序使用链接样式(颜色,光标)对元素进行样式设置。 问题是,如果现在单击该按钮,它将导致浏览器重定向。如何更新以上内容以不重定向浏览器onClick但仍然运行? 问题答案: 您应该像这样在 onClick* 事件中调用 preventDefault 函数: * 您可以针对自己的用例使用类似以下的内容:
无法在下面的链接中执行右键单击操作。我们尝试了几乎所有的案例来实现自动化。https://the-internet.herokuapp.com/context_menu 我使用的是Selenium 3.3和geckodrivers的最新版本。 动作动作=新动作(驱动);行为moveToElement(元素)。点击();行为上下文单击(元素)。build()。执行();行为发送键(键。箭头向下)。发
以下是按CONTROL键并在超文本标记语言文件上选择多个磁贴的代码。它没有履行它应该履行的职责。 有人能帮我吗?
我的意图是对进行简单的克隆,但在此之前,我在修改列表时遇到了一个问题。在列表中添加另一个元素 为什么?
null java.lang.IllegalStateException:在onSaveInstanceState e/androidRuntime(9008):at android.support.v4.app.fragmentManagerImpl.checkStateLoss(fragmentManager.java:1354)e/androidRuntime(9008):at androi