gpt4 book ai didi

javascript - 无法读取 selenium 中未定义的 innerHTML 认为元素已定义?

转载 作者:行者123 更新时间:2023-11-28 00:41:48 26 4
gpt4 key购买 nike

在使用 Selenium 和 Chrome 驱动程序执行 python 脚本期间,驱动程序执行 java 脚本段然后返回的位置存在一个特殊问题:

消息:未知错误:无法读取未定义的属性“innerHTML”

这是片段:

function getCommand() {
var MSGNUM = document.getElementsByClassName("ChatBox").length -1;
var MSG = document.getElementsByClassName("message-body")[MSGNUM];
MSG = MSG.innerHTML;
var NAME = document.getElementsByClassName("username")[MSGNUM];
NAME = NAME.innerHTML;
var COMMAND = (NAME+" "+MSG);
return(COMMAND);
}
return getCommand(); //To return the statement back to a python varible
<div class="ChatBox" style="display: block;">
<div class="Wrapper">
<div class="username">Chuck Norris</div>
<div class="message-body">Goodmorning</div>
</div>
</div>

以及执行它的 python 代码

message = driver.execute_script("""    function getCommand() {
var MSGNUM = document.getElementsByClassName("ChatBox").length -1;
var MSG = document.getElementsByClassName("message-body")[MSGNUM];
MSG = MSG.innerHTML;
var NAME = document.getElementsByClassName("username")[MSGNUM];
NAME = NAME.innerHTML;
var COMMAND = (NAME+" "+MSG);
return(COMMAND);
}
returngetCommand()""");

在 google chrome 命令行中执行时,java 脚本可以正常工作,没有非法的 return 语句。更新 chromedriver 和 selenium 似乎无法解决问题。

最佳答案

尝试等待一段时间,直到所需元素出现在 DOM 中。此外,我认为没有理由使用 execute_script:

from selenium.webdriver.support import expected_conditions as EC
from selenium.webdriver.support.ui import WebDriverWait as wait
from selenium.webdriver.common.by import By

chat_box = wait(driver, 10).until(EC.presence_of_all_elements_located((By.CLASS_NAME, "ChatBox")))[-1]
message = chat_box.find_element_by_class_name("message-body").text
name = chat_box.find_element_by_class_name("username").text
print(name + " " + message)

关于javascript - 无法读取 selenium 中未定义的 innerHTML 认为元素已定义?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/53028375/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com