我正在测试一个文本框和按钮 - 用户在文本框中输入一些信息然后点击按钮 - 按钮改变文本来自"更新"到"更新"然后回到"更新"一旦操作完成。
我希望Selenium等到按钮返回"更新"在继续之前。
我尝试过使用xpath的各种解决方案,这就是我现在的位置:
self.wait.until(EC.element_to_be_clickable(By.XPATH, '//button[@id="send_data"][text()="Update"]'))
按钮的HTML如下:
<button id="send_data" type="button" class="btn btn-success" onclick="ChangeParam(this,'radio','freq'; return false;">Update</button>
和
<button id="send_data" type="button" class="btn btn-default" onclick="ChangeParam(this,'radio','freq'; return false;">Updating</button>
我哪里错了?
答案 0 :(得分:0)
这是一个非常常见的问题:您应该将type_of_locator, "locator_string"
作为参数元组((By.XPATH, "//button"))
发送,而不是作为两个单独的参数(By.XPATH, "//button")
使用以下代码
self.wait.until(EC.element_to_be_clickable((By.XPATH,'//button[@id="send_data"][text()="Update"]')))
答案 1 :(得分:-1)
另一个可行的解决方案是使用EC.invisibility_of_element_located
。单击“更新”按钮后,您可以等待“更新”状态按钮代表的元素的隐身状态。
self.wait.until(EC.invisibility_of_element_located((By.CSS_SELECTOR,'button#send_data .btn-default')))