问题:无法使用存储的值选择页面元素。
情况:我需要打开一个页面,使用find.element(By.ID,“element”,value = storedvalue).click()根据文档,我应该可以这样做。也许我读错了?我得到一个TypeError,这意味着我使用的函数是错误的。 o.O
http://selenium-python.readthedocs.org/en/latest/api.html
单步执行代码:
存储testingNum
转到另一个保存选择的页面
验证myvalue
的值是否在当前页面上
选择具有pick_id
的页面元素myvalue
,因为它的实际值(请参阅HTML)
HTML:
<li id="pick_id" value="261">261</li>
测试代码段:
myvalue = driver.find_element_by_id("testingNum").get_attribute("value")
driver.find_element_by_id("verify_btn").click()
self.assertTrue(self.is_text_present(myvalue))
driver.find_element(By.ID, "pick_id", value=myvalue).click()
错误:TypeError: find_element() got multiple values for keyword argument 'value'
答案 0 :(得分:1)
您收到了一个TypeError,因为您错误地调用了find_element
。
不正确的:
driver.find_element(By.ID, "pick_id", value=myvalue)
find_element
需要2个关键字参数,by
和value
。
您传递的是2个位置参数,然后是关键字参数。第二个位置参数被解释为value
。然后,当您传递关键字参数value=
时,您会收到类型错误,因为您为“值”定义了多个值
答案 1 :(得分:1)
您正尝试匹配id
元素的两个属性 - value
和li
。
正如@Corey所说,你正在调用find_element()错误;它需要2个关键字参数 - 第一个参数指定如何(ID,Name,xpath,css等),第二个参数指定过滤器value
。
如果要匹配多个属性,请使用xpath:
driver.find_element(by=By.XPATH, value="//li[@id='pick_id' and @value='" + myvalue+ "']")