我的 WebDriverWait 返回 "dict" 而不是所需的元素
My WebDriverWait is returning a "dict" instead of the required element
我想使用带有 Gauge 的 Selenium 从网页中获取数据。我写了下面的代码,使用 wait_for_element
:
from selenium.common.exceptions import TimeoutException
from selenium.webdriver.support.ui import WebDriverWait
from selenium.webdriver.support import expected_conditions as EC
from selenium.webdriver.common.by import By
from step_impl.mixins.exception import MixinException
class MixinSelector(MixinException):
def __init__(self, driver=None):
super(MixinSelector, self).__init__(driver)
self.wait_for_element_time = 60
def wait_for_elem(self, by, locator_string):
try:
element = WebDriverWait(self.driver,self.wait_for_element_time)
.until(EC.presence_of_element_located((by,
locator_string)))
print(element)
print(type(element))
return element
except TimeoutException:
self.fail_test('failed')
except:
raise
但是,这会导致 dict
实例,如调试 print
s:
所示
{'ELEMENT': '0.8884832448581164-1'}
<class 'dict'>
我这样调用函数:
self.wait_for_elem(By.CSS_SELECTOR, '#baseWebLayoutContainerID')
这是个问题,因为我需要将结果作为一个 Web 元素,然后才能在其他几个函数中使用。我怎样才能得到那个结果?
不要期望 Web 元素从 WebDriverWait 返回,而是在 WebDriverWait 之后添加另一行以获取 Web 元素,请参见下面的代码
WebDriverWait(driver, 10).until(EC.presence_of_element_located((by, locator_string)))
element = driver.find_element(by, locator_string)
return element
正如您在下图中看到的那样,它对我来说效果很好
我想使用带有 Gauge 的 Selenium 从网页中获取数据。我写了下面的代码,使用 wait_for_element
:
from selenium.common.exceptions import TimeoutException
from selenium.webdriver.support.ui import WebDriverWait
from selenium.webdriver.support import expected_conditions as EC
from selenium.webdriver.common.by import By
from step_impl.mixins.exception import MixinException
class MixinSelector(MixinException):
def __init__(self, driver=None):
super(MixinSelector, self).__init__(driver)
self.wait_for_element_time = 60
def wait_for_elem(self, by, locator_string):
try:
element = WebDriverWait(self.driver,self.wait_for_element_time)
.until(EC.presence_of_element_located((by,
locator_string)))
print(element)
print(type(element))
return element
except TimeoutException:
self.fail_test('failed')
except:
raise
但是,这会导致 dict
实例,如调试 print
s:
{'ELEMENT': '0.8884832448581164-1'}
<class 'dict'>
我这样调用函数:
self.wait_for_elem(By.CSS_SELECTOR, '#baseWebLayoutContainerID')
这是个问题,因为我需要将结果作为一个 Web 元素,然后才能在其他几个函数中使用。我怎样才能得到那个结果?
不要期望 Web 元素从 WebDriverWait 返回,而是在 WebDriverWait 之后添加另一行以获取 Web 元素,请参见下面的代码
WebDriverWait(driver, 10).until(EC.presence_of_element_located((by, locator_string)))
element = driver.find_element(by, locator_string)
return element
正如您在下图中看到的那样,它对我来说效果很好