这是我第一天使用Selenium,所以我还没有掌握所有的技巧。我想使用python填充许多不同的值到文本框/下拉框从一个网站。我需要这样做很多次,每次的值都会不同。
当使用Selenium时,我需要访问的大部分内容都在表单中:
<input class="there are several classes" type="text" data-bind="value: value">
多个文本框具有相同的类,相同的类型,但不同的数据绑定值。每次尝试更新这些文本框中的值时,我只能更新第一个文本框(并且我需要访问所有文本框)。
我写的代码是:from selenium import webdriver
driver = webdriver.Firefox()
driver.get('website')
a = driver.findElement(By.cssSelector("input.there.are.several.classes.input-sm")).getAttribute("value")
a.clear()
a.send_keys('0.20')
对于这段代码,我得到AttributeError: 'WebDriver'对象没有属性'findElement'
我也试过了:
b = driver.find_element_by_css_selector('input.there.are.several.classes.input-sm')
b.clear()
b.send_keys('2')
可以工作,但是它只更新第一个文本框。我需要一种方法来访问基于文本框的特定值在同一类。
使用find_elements_by_css_selector()
并遍历找到的input
元素:
for elm in driver.find_elements_by_css_selector('input.there.are.several.classes.input-sm'):
elm.clear()
elm.send_keys("2")
应该可以了
b = driver.find_elements_by_css_selector('input.there.are.several.classes.input-sm')