【发布时间】:2016-07-05 11:42:56
【问题描述】:
我编写了一个函数,用户输入要使用的策略类型(即 By.XPATH、By.ID、By.NAME 等)以及该对象应该存在的地址,该函数将选择要使用的 Selenium 方法、定位对象并将其滚动到视图中。
view_object(driver, type, address):
strategy = {
"css_selector": driver.find_element_by_css_selector,
"id": driver.find_element_by_id,
"link_text": driver.find_element_by_link_text,
"name": driver.find_element_by_name,
"xpath": driver.find_element_by_xpath
}
lhsType, rhsType = type.split(".", 1)
find_element = strategy.get(rhsType.lower())
obj = find_element(address)
driver.execute_script("return arguments[0].scrollIntoView();", obj)
我创建这个函数的原因与我在 Firefox 或 Chrome 上没有失败的 Internet Explorer (IE) 上运行失败的测试有关。经过一番调查,我得出结论,只要我尝试测试需要首先滚动到页面并使其可见的对象,就会发生故障。
不管怎样,回到问题上来。我遇到代码在“obj = find_element(element)”行失败的情况,因为加载对象大约需要 30-45 秒。
为了解决这个问题,我相信我需要创建一个类,使这行代码可以使用 Selenium WebDriverWait(driver, time) 方法,然后它就会有一个分配的在失败之前尝试此操作的时间量。我该怎么办?
【问题讨论】:
标签: python selenium selenium-webdriver webdriver