python - selenium 运行网页中js脚本报错,提示未定义

 青锋寒万岁 发布于 2022-10-26 22:03

问题1

selenium 运行网易中js脚本报错提示未定义
报错提示如下:

driver.execute_script("javascript:amsInit(62800,303153);");

error:
selenium.common.exceptions.WebDriverException: Message: ReferenceError: amsInit is not defined

js函数是个链接,点击后打开天涯明月刀的选择服务器大区窗口,按钮的代码如下:

【绑定大区】

firefox控制台运行 amsInit(62800, 303153); 有效能正常打开选择大区窗口,但会提示未定义,如下:

firefox控制台运行

>>amsInit(62800,303153)
<-undefined

请问直接调用网页中的类似js脚本,需要如何实现?

问题2:

代码如下一个的一个选择窗口,如何用selenium操作

  • 尝试一下方法均不可选中

    使用Select方法无效

    Select(driver.find_element_by_id("area1ContentId_wuxia")).select_by_value("7609705")

    遍历option,使用click方法无效

    allOptions = select.find_elements_by_tag_name("option")
    for option in allOptions:
        print "Value is: " + option.get_attribute("value") + "Text is:"+ option.text
        option.click()
        break


    请问如上的选择应该如何操作?

    1 个回答
    • 自己解决:
      这个选择框是js回调操作的 select 方法和client都无效,解决办法是 使用 keys.ARROW_DOWN键盘事件模拟选择

      # 遍历选择大区,服务器
          allarea1options = driver.find_element_by_id("area1ContentId_wuxia").find_elements_by_tag_name("option")        
          for option in allarea1options:
              if option.text == area1:
                  print(u"找到大区:".encode("gbk") + option.text.encode("gbk"))
                  driver.find_element_by_id("area1ContentId_wuxia").send_keys(Keys.ENTER)
                  time.sleep(1)
                  # 选择服务器
                  select_area  = driver.find_element_by_id("areaContentId_wuxia")
                  allareaoptions = select_area.find_elements_by_tag_name("option")
                  for option in allareaoptions:
                      if option.text == area2:
                          print(u"找到服务器:".encode("gbk") + option.text.encode("gbk"))
                          driver.find_element_by_id("areaContentId_wuxia").send_keys(Keys.ENTER)
                          break
                      else:
                          driver.find_element_by_id("areaContentId_wuxia").send_keys(Keys.ARROW_DOWN)
              else:
                  driver.find_element_by_id("area1ContentId_wuxia").send_keys(Keys.ARROW_DOWN)
      2022-10-27 01:33 回答
    撰写答案
    今天,你开发时遇到什么问题呢?
    立即提问
    热门标签
    PHP1.CN | 中国最专业的PHP中文社区 | PNG素材下载 | DevBox开发工具箱 | json解析格式化 |PHP资讯 | PHP教程 | 数据库技术 | 服务器技术 | 前端开发技术 | PHP框架 | 开发工具 | 在线工具
    Copyright © 1998 - 2020 PHP1.CN. All Rights Reserved 京公网安备 11010802041100号 | 京ICP备19059560号-4 | PHP1.CN 第一PHP社区 版权所有