当前位置: 首页 > 面试题库 >

无法在Selenium Python中执行点击操作

李浩邈
2023-03-14
问题内容

我正在使用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