如何使用Selenium和Python更改DOM中的属性值

我正在尝试使用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')

非常感激任何的帮助 .

回答(2)

2 years ago

您可以尝试这一点,但要了解该网站可能不适合您发送值的任何内容 . 它仍然可以将值限制为100等 .

Javascript部分只接受您传递的元素,并将值设置为您传入的内容,例如“300” .

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

2 years ago

dimension = image.size['width'] * image.size['height']
driver.execute_script('arguments[0].setAttribute("dimension","{}");'.format(dimension), image)