选择具有存储值的页面元素

时间:2013-10-05 19:21:23

标签: python selenium

问题:无法使用存储的值选择页面元素。

情况:我需要打开一个页面,使用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'

2 个答案:

答案 0 :(得分:1)

您收到了一个TypeError,因为您错误地调用了find_element

不正确的:

driver.find_element(By.ID, "pick_id", value=myvalue)

find_element需要2个关键字参数,byvalue

您传递的是2个位置参数,然后是关键字参数。第二个位置参数被解释为value。然后,当您传递关键字参数value=时,您会收到类型错误,因为您为“值”定义了多个值

答案 1 :(得分:1)

您正尝试匹配id元素的两个属性 - valueli

正如@Corey所说,你正在调用find_element()错误;它需要2个关键字参数 - 第一个参数指定如何(ID,Name,xpath,css等),第二个参数指定过滤器value

如果要匹配多个属性,请使用xpath:

driver.find_element(by=By.XPATH, value="//li[@id='pick_id' and @value='" + myvalue+ "']")