python - Selenium + Python 期望特定的已找到元素
问题描述
我想在一个已经找到的对象上使用期望,但我得到了一个错误。我只能在单击父项之前找到父项-之后它会变异为“多相似”输入元素,区分它的唯一方法是“值”属性(不是属性,因此无法从 XPath 访问) .
我的代码是(类似于):
parent_element = self.driver.find_element_by_xpath("//div/div/input[position()=10]/div")
parent_element.click() # After this I cannot locate parent_element any more
child_element = WebDriverWait(self.driver,3).until(
expect.element_to_be_clickable(
parent_element.find_element_by_xpath("./div")
)
)
child_element.click()
这导致:
TypeError: find_element() argument after * must be an iterable, not function
解决方案
试试这条线:
child_element = WebDriverWait(parent_element, 3).until(
expect.element_to_be_clickable((By.XPATH, "./div")))
请注意,element_to_be_clickable()
应该接收"by"
和"value"
作为唯一参数的元组,而不是 WebElement
PS我认为那expect
是ExpectedConditions
推荐阅读
- excel - Excel复制粘贴2行但只移动一行
- javascript - 我可以将通过 for 循环创建的无序列表转换为树视图吗
- node.js - 带有 MongoDB 的 Vue js 服务器表
- java - List 中的空元素导致线程“main”中的异常 java.lang.StringIndexOutOfBoundsException:字符串索引超出范围
- javascript - 更改 sass 文件后节点 sass 错误
- php - 我将如何找到和编辑这个 get_template_part('content/post-byline'); WordPress的?
- json - 如何仅从 url 记录 json 的 id?
- r - bookdown:LaTeX 错误:包 hyperref 的选项冲突
- rest - 使用 POSTMAN 发送 POST 请求后如何获取 API 返回的数据?
- kotlin - Parcelize 和 ObjectBox 冲突