【问题标题】:python - textarea text not getting using seleniumpython - textarea 文本没有使用 selenium
【发布时间】:2020-07-01 06:39:23
【问题描述】:

文本显示在 textarea 中,但未包含在元素中。 我可以在浏览器网络的 XHR 响应中找到它,如何从 XHR 响应中获取它?

这就是网站 HTML 调用我试图提取文本的区域的方式:

<textarea class="text sr "
    wrap="off" id="arid_WIN_2_1000000161"
    cols="20" maxlen="15"
    style="top: 0px; left: 117px; width: 175px; height: 21px; background-color: rgb(204, 204, 204);"
    arautocak="0" arautoctt="400"
    arencryptdataatrest="0" rows="1" readonly="">
</textarea>

这是响应结果:

this.result = {
  s: "null",
  oa: "fq0_1.SV(1000000621, {t: 7, v:\"1593581897\"}); fq0_1.SV(1000000161, {t: 4, v: \"INC0000AAAAAAAA\"});"
};

this.cacheIDRefCount = {
    "smt-backend": 1
};;
if (getCurWFC_NS(this.windowID) != null)
  getCurWFC_NS(this.windowID).status([]);

'INC0000AAAAAAAA' 是我想要的文本。

【问题讨论】:

  • 我只能在 XHR 请求的响应结果中找到文本。

标签: javascript html python-3.x selenium selenium-chromedriver


【解决方案1】:

如果在服务器端无法修复响应的格式,并且可以信任数据源,则可以使用eval解析结果字符串来提取数据。

const response = "fq0_1.SV(1000000621, {t: 7, v:\"1593581897\"}); fq0_1.SV(1000000161, {t: 4, v: \"INC0000AAAAAAAA\"});";
const calls = response.split(';');

const fq0_1 = {
  SV: function(arg, obj) {
    return eval(obj);
  }
};

const result = calls.map(str => {
  return eval(str);
});

console.log(result[1].v);
代码首先将响应文本拆分为数组,每个成员都包含一个“方法调用”。 fq0_1 是一个包含SV 方法的对象,该方法在评估代码中被调用。最后,我们创建 result 数组,其中包含方法调用参数中的对象作为活动对象。

我想响应文本的目的是用一个库(它有一个包含 SV 方法的 fq0_1 对象,它根据数据执行一些操作)来解析响应文本。

【讨论】:

  • 谢谢,我得到的答案是它可以被 selenium 中的 .get_attribute('value') 废弃
  • @johnny92 好吧,您在这里问过“我如何从 XHR 响应中得到它”,这是该问题的答案。
猜你喜欢
  • 1970-01-01
  • 2011-12-05
  • 2023-04-06
  • 2021-10-20
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多