【问题标题】:How can I change an attribute value in the DOM using Selenium and Python如何使用 Selenium 和 Python 更改 DOM 中的属性值
【发布时间】:2016-11-05 11:49:51
【问题描述】:

我正在尝试使用 Python 和 Selenium 浏览一个网站,但遇到了一个我不知道如何解决的问题(假设它甚至可能!)

<select id="uniqueid" autocomplete="off" value="10">
  <option selected="selected" value="10">10</option>
  <option value="30">30</option>
  <option value="50">50</option>
  <option value="100">100</option>
</select>

上面的 HTML 代码在网站上用于显示我试图抓取的数据表中的行数。表的总大小刚刚超过 300 行。

我使用 Selenium 选择其中一个选项没有问题,但我希望实现的是操纵 DOM 并将最后一个值从 100 更改为 350,以便当我的脚本选择该选项时显示整个表无需我遍历分页。

我读到我可以使用 execute_script,但我不知道如何更改其中一个选项的值。例如:

WebDriver.execute_script("document.getElementById('uniqueid') --what text goes here-- = '350')

任何帮助将不胜感激。

【问题讨论】:

    标签: javascript python selenium selenium-webdriver


    【解决方案1】:

    您可以尝试此操作,但要了解网站可能无法接受您发送任何有价值的东西。它可能仍将值限制为 100 等。

    Javascript 部分只获取您传递给它的元素并将值设置为您传递的任何内容,例如“300”。

    select = driver.find_element_by_id("uniqueid")
    WebDriver.execute_script("arguments[0].value = arguments[1]", select, "300")
    

    【讨论】:

      【解决方案2】:
      dimension = image.size['width'] * image.size['height']
      driver.execute_script('arguments[0].setAttribute("dimension","{}");'.format(dimension), image)
      

      【讨论】:

      • 请不要简单地发布代码的 sn-ps 作为答案。解释为什么这可以回答问题或如何解决问题。
      猜你喜欢
      • 1970-01-01
      • 2016-08-10
      • 2017-01-18
      • 1970-01-01
      • 1970-01-01
      • 2021-06-01
      • 2021-09-09
      • 2021-02-12
      • 1970-01-01
      相关资源
      最近更新 更多