【问题标题】:How is chrome made to ignore javascript and how to overcome this?chrome如何忽略javascript以及如何克服这个问题?
【发布时间】:2021-12-18 16:34:16
【问题描述】:

有些网站会响应 javascript 指令,而有些则不会。桑坦德斯网站允许在首页使用 javascript,但一旦您尝试登录,情况就会发生变化。从 python 传入的以下内容将打印到首页而不是第二页的控制台。

driver.execute_script('console.log(" lll kkk cheaky breeki ");')

我仍然可以打开开发者工具并输入

console.log(" lll kkk cheaky breeki ");

当我手动执行时它仍然有效,但当我通过 python 传入时它仍然有效。

我的完整脚本如下

import time
from selenium import webdriver
from selenium.webdriver.support.ui import WebDriverWait
from selenium.webdriver.support import expected_conditions as EC
from selenium.webdriver.common.keys import Keys
from selenium.webdriver.common.by import By
import selenium.common.exceptions as s_ex

driver = webdriver.Chrome("chromedriver.exe")
driver.get("https://www.santander.co.uk/")
login_xp = '/html/body/div[3]/header/div[1]/div/nav/div/div[1]/div/div/nav/ul/li[2]/a';
time.sleep(1)
driver.execute_script('console.log(" i print fine  ");')
WebDriverWait(driver,10).until(EC.presence_of_element_located((By.XPATH,login_xp)))
log = driver.find_element_by_xpath(login_xp)
log.click();
time.sleep(2)
driver.execute_script('console.log(" lll kkk cheaky breeki ");')  ## how can i get this to print, why doesnt it now?
  1. 如何让这个页面接受 js?
  2. 为什么现在不接受js了?

【问题讨论】:

    标签: javascript python html selenium-chromedriver webautomation


    【解决方案1】:

    我已经尝试过您的示例 - 看起来 log.click() 行使浏览器打开了一个新选项卡。发生这种情况时,您的driver 仍指向带有主页的原始选项卡。

    此时运行driver.execute_script('console.log(" lll kkk cheaky breeki ");') 将在原始选项卡中执行脚本,而不是在新选项卡中。

    如果你想在登录页面上运行脚本,我建议直接使用,例如:

    driver.get('https://retail.santander.co.uk/olb/app/logon/access/#/logon')
    

    【讨论】:

      【解决方案2】:

      问题是log.click() 打开了一个新标签。因此,您需要告诉驱动程序切换到该新选项卡并从现在开始执行该选项卡上的所有语句。您会发现当前驱动程序在新选项卡上也找不到任何元素,因为它仍在查看您的旧选项卡。

      log.click()
      driver.switch_to.window(driver.window_handles[-1])
      driver.execute_script('console.log(" lll kkk cheaky breeki ");')
      

      请注意,选项卡切换非常初级,它只是转到最后一个选项卡。

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 2011-09-11
        • 2021-04-05
        • 2022-06-15
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2019-05-11
        • 2021-05-08
        相关资源
        最近更新 更多