我正在尝试使用显式等待将此代码更改为某些内容:
class InputAutocompleteElement(InputElement):
def __set__(self, obj, value):
driver = obj.driver
element = self.find_element(driver, self.locator)
time.sleep(3)
element.clear()
time.sleep(1)
element.send_keys(value)
time.sleep(3)
element.send_keys(Keys.RETURN)
我在上面的行中做的是:首先,尝试让脚本睡3秒,然后清除文本框,然后再睡一秒,然后发送字符串,然后再睡3秒,然后发送一个回车密钥,因为这是从自动完成获取名称的必要条件,不可能只输入名称,我的问题基本上是页面需要时间来发送字符串后取值,我发送的输入键太快而不是像这样工作,页面需要时间来取值,然后发送回车键。
感谢。
答案 0 :(得分:0)
你可能不需要前两次睡觉。最后一次睡眠应该替换为等待自动完成下拉列表打开的显式等待。基本上,您等待与自动完成下拉列表相关联的某些元素的可见性。如果您不知道如何找到自动完成下拉列表,则必须共享指向该网站的链接或发布HTML。下面的代码应该让您了解该做什么
from selenium.webdriver.common.by import By
from selenium.webdriver.support.ui import WebDriverWait
from selenium.webdriver.support import expected_conditions as EC
...
class InputAutocompleteElement(InputElement):
def __set__(self, obj, value):
driver = obj.driver
element = self.find_element(driver, self.locator)
element.clear()
element.send_keys(value)
WebDriverWait(driver, 10).until(EC.visibility_of_element_located((By.ID, "idOfAutocompleteDropdown"))
element.send_keys(Keys.RETURN)
您可以在python docs
中找到更多信息