在jquery上使用webdriver execute-script是行不通的

Using webdriver execute-script on jquery does not work

本文关键字:execute-script 行不通 webdriver jquery      更新时间:2023-09-26

我试图使用webdriver的execute_script()来运行jquery,但没有运气。下面是我执行的步骤:

  1. 从Selenium/Webdriver中运行execute_script(),如下所示:

    jquery_string = 'return $(''[id="ClusterMembers:ClusterMembersScreen:ttlBar"]'')'    
    web_element = driver.execute_script(jquery_string)
    

    返回错误:

    WebDriverException: Message: $ is not defined

    Build info: version: '2.53.0'…

  2. 从调试器保持上述函数调用,从selenium客户端机器转到常设FF浏览器,然后在开发者控制台输入相同的jquery字符串,如下所示(在输入"allow paste"之后):

    $('[id="ClusterMembers:ClusterMembersScreen:ttlBar"]')
    

    =>控制台按预期返回

  3. 在运行与(1)相同的上述代码之前添加了以下代码:

    driver.execute_script(open('Cjquery-2.2.4.js').read())
    TestCase.assertTrue(cluster_page.driver_util.driver.execute_script("return jQuery.active == 0"))
    

    =>从调试器返回的"web_element"的值不是一个webelement对象,而是一个字典,包含以下内容:

    {'mouseout': 'function ( data, fn ) {'n't'treturn arguments.length > 0 ?'n't't'tthis.on( name, null, data, fn ) :'n't't'tthis.trigger( name );'n't}', ....
    

    我已经尝试使用最新版本的jquery(3.1),但仍然得到相同的失败

我想知道这个问题是否与"允许粘贴"有关FF或其他我一直缺失的东西?如果有人能告诉我,我很感激?

不使用$ try,使用this:

jquery_string = "jQuery('[id*=ClusterMembers][id*=ClusterMembersScreen][id*=ttlBar]');"

尽量避免在选择器中使用':',否则可能会导致错误。