【问题标题】:Selenium / Python - Selecting an element id by a stored variableSelenium / Python - 通过存储的变量选择元素 id
【发布时间】:2013-10-03 21:56:44
【问题描述】:

问题:无法使用存储的变量选择元素 id 对象。

情况:我需要打开一个页面,进行选择,将该选择存储在变量card_id 中,然后在最后一页上找到ID 为pick_id 的元素和存储的变量,然后单击它。希望我对这种情况很清楚。如果没有,请询​​问。我试图找到 Selenium API 文档来处理这个问题,不。

测试代码:

def test_00_validation_test(self):
        driver = self.driver
        driver.get(self.base_url)
        driver.find_element_by_id("first_page").click()
        driver.find_element_by_id("make_pick").click()
        driver.find_element_by_xpath("(//input[@name='64'])[2]").click()
        driver.find_element_by_id("save_pick").click()
        self.assertEqual("Pick Was Saved", self.close_alert_and_get_its_text())
        card_id = driver.find_element_by_id("testingNum").get_attribute("value")
        driver.find_element_by_id("confirm_pick_page").click()
        driver.find_element_by_id("pick_id", card_id).click()

【问题讨论】:

  • 如果你传递了 id 并且 selenium 没有找到它,它可能不在 html 中。如果你 100% 在 html 中,它可能在 iframe 中。如果不知道你到底是什么,就帮不了你。
  • driver.find_element_by_id("pick_id", card_id) 是什么意思?您不能将两个参数传递给此函数。请说明您要在此功能中实现的目标。
  • @user1411110 完全正确。我试图用第二个论点欺骗我的方式。没有。我也试过这样driver.find_element_by_id("pick_id").click(card_id),不。我知道这些是无效的,但我希望找不到另一种方法来处理这种情况。
  • 另外,对于“我想要实现什么”的问题。我所做的每个选择都存储在服务器上,我们将其隐藏在 HTML 中为 testingNum 仅用于测试目的,并为其分配了值。我将该值获取并存储为card_id。因此,当我转到 confirm_pick_page 时,我可以发现它与 pick_id 元素相关联。

标签: python selenium


【解决方案1】:

好的,根据您的解释,我认为您想要去元素 pick_id 然后向下钻取并查找 card_id 并单击它。这可以这样做:

card_id = driver.find_element_by_id("testingNum").get_attribute("value")
pick_id = driver.find_element_by_id("pick_id")
pick_id.find_element_by_id(card_id).click()

您始终可以找到一个元素,然后使用find_element_by 向下钻取该元素。

【讨论】:

  • 这将,并且确实,给NoSuchElementExceptioncard_id 是一个存储变量,在您的示例中使用 pick_id 就像使用 driver. 一样,将不起作用。只是为了它,我试过了,但失败了。感谢您的协助!
  • 是否有另一种方法可以使用带有 3 个参数的 find_element_by_id 函数,或者使用另一个函数来获取具有存储值的元素?
猜你喜欢
  • 1970-01-01
  • 2019-12-20
  • 1970-01-01
  • 1970-01-01
  • 2018-08-10
  • 2021-05-18
  • 2021-10-18
  • 2021-06-22
  • 2020-04-05
相关资源
最近更新 更多