当前位置: 首页 > 知识库问答 >
问题:

生菜/硒去除新创建的DOM元素

郎慎之
2023-03-14

脚本

Given I navigate to the table menu
When I click the "Add" button
And I fill "First name" with "Bob"
And I fill "Last name" with "Dylan"
And I click the "Create" button
Then I should see a new entry with a name of "Bob Dylan"

步骤定义

@step(u'I click the "(.*)" button')
def i_click_the_named_button(step, field):
    button = world.browser.find_element_by_xpath('(//a[contains(text(),"{0}") and not(contains(@style, "display:none"))] | //input[@value="{0}" and not(contains(@style, "display:none"))] | //li[contains(text(), "{0}") and not(contains(@style, "display:none"))])[1]'.format(field))
    button.click()

@step(u'I fill "(.*)" with "(.*)"')
def i_fill_in_field_with_value(step, field, value):
    try:
        label = world.browser.find_element_by_xpath('//label[contains(text(),"%s")]' % field)
        id = label.get_attribute('for')

        input = world.browser.find_element_by_id(id)
        input.clear()
        input.send_keys(value)
    except:
        input = world.browser.find_element_by_xpath('//input[@placeholder="%s"]' % field)    
        input.clear()
        input.send_keys(value)

错误

无此元素(会话信息:chrome=31.0.1650.63)(驱动程序信息:chromeDrive=2.8.240825,平台=Linux3.8.0-34-通用x86_64)

描述

单击“创建”按钮时,会在DOM中插入一个div元素(通过JavaScript),显示“First name”和“Last name”字段。在窗口可见的情况下运行时,我可以看到div元素在消失并导致“I fill…”之前短暂出现失败的步骤。

据我所知,这是一个保持对新创建的div元素的关注的问题?

尝试的解决方案

  • 操作链(world.browser)。move_to_element(按钮)。单击()。执行()
  • world.browser.switch致()和朋友
  • world.browser.find_element(...)。send_keys(\n)
  • sleep_until,implicitly_wait等

环境

  • PyVirtualDisplay 0.1.2
  • 硒2.38.4
  • 莴苣0.2.19
  • Python 2.7.4
  • Lubuntu Linux 13.10

研究

在Selenium IDE中打开新窗口后保持焦点

使用Python绑定,SeleniumWebDriver click()有时无法工作。

如何切换到单击按钮后打开的新浏览器窗口?

Selenium WebDriver动作链

网络驱动程序。py实现

硒原料药

共有1个答案

谷梁宏恺
2023-03-14

我不知道这为什么能解决问题,但它确实解决了问题。

@step(u'I click the "(.*)" button')
def i_click_the_named_button(step, field):
    button = world.browser.find_element_by_xpath('(//a[contains(text(),"{0}") and not(contains(@style, "display:none"))] | //input[@value="{0}" and not(contains(@style, "display:none"))] | //li[contains(text(), "{0}") and not(contains(@style, "display:none"))])[1]'.format(field))
    button.click()
    time.sleep(1)
 类似资料:
  • 本文向大家介绍JS动态创建DOM元素的方法,包括了JS动态创建DOM元素的方法的使用技巧和注意事项,需要的朋友参考一下 本文实例讲述了JS动态创建DOM元素的方法。分享给大家供大家参考。具体如下: 近日,因工作需要,需要通过点击某个元素后, 动态创建一个DOM元素并显示,因此写了一些相关的JS函数,在此记录,以作备忘: 使用示例: 希望本文所述对大家的javascript程序设计有所帮助。

  • 问题内容: 我正在尝试测试DOM元素是否存在,如果确实存在,则将其删除,如果不存在,则将其创建。 检查是否存在,创建元素有效,但删除该元素无效。基本上,所有这些代码所做的就是通过单击按钮将iframe注入网页。我想发生的是,如果iframe已经存在,可以删除它。但是由于某种原因,我失败了。 问题答案: 应该在父级上调用,即: 在您的示例中,您应该执行以下操作:

  • 利用DOM方法创建元素节点,通常要将document.createElement()、document.createTextNode()、appendChild()配合使用,十分麻烦。 而jQuery使用$就可以直接创建DOM元素 var oNewP = $("<p>使用jQuery创建的内容</p>"); 以上代码等同于javascript var oNewP2 = docume

  • 我就是这么开始的:Hub命令:Java-jar selenium-server-standalone-3 . 141 . 59 . jar-role Hub节点命令:Java-dwebdriver . chrome . driver = " \ Users \ rachitamital \ eclipse-workspace \ first javaproject \ drivers \ chro

  • 动态创建DOM元素的三种方式 document.write(); 不常用,因为容易覆盖原来的页面。 innerHTML = (); 用的比较多。绑定属性和内容比较方便。(节点套节点) document.createElement(); 用得也比较多,指定数量的时候一般用它。 1、方式一: document.write(); 这种方式的好处是:比较随意,想创建就创建,可以直接在write里写属性都行

  • 后台菜单创建 一般我们的插件都会有后台管理的菜单,此时我们需要创建插件的后台管理菜单。以下是常用的方法。以下是Mydemo.php中的代码如下: <?php namespace addons\mydemo; use app\common\library\Menu; use app\common\model\User; use fast\Date; use think\Addons; use t