1

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

情况:我需要打开一个页面,使用 find.element(By.ID, "element", value=storedvalue).click() 根据文档,我应该可以做到这一点。也许我读错了?我得到一个 TypeError,这意味着我使用了错误的函数。oO

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'

4

2 回答 2

1

You are trying to match on two attributes - id and value of the li element.

As @Corey says, you are calling find_element() wrong; it takes 2 keyword arguments - the first argument specifies how (ID , Name, xpath, css etc), and the second specifies the filter value.

Use xpath when you want to match on more than one attribute:

driver.find_element(by=By.XPATH, value="//li[@id='pick_id' and @value='" + myvalue+ "']") 
于 2013-10-07T03:18:37.730 回答
1

你得到一个 TypeError 因为你打电话find_element错了。

不正确:

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

find_element接受 2 个关键字参数by, 和value.

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

于 2013-10-05T19:47:56.303 回答