我有一个包含多个标签的简单页面。它使用角度。
在初始页面上加载元素加载,然后在加载数据时,我在所有禁用用户活动之前都有一个元素,直到数据加载为止。
脚本有一个'等到元素定位的可见性',当我使用chromedriver运行它时。
当我添加“headless”选项时,测试失败,因为它无法找到该元素。有什么我可以做的工作在我的页面和无头,或者我必须坚持使用GUI?
代码失败:
def loading_appear_disappear(self):
element = BaseLocators.Locators.OVERLAY_GRID
wait = WebDriverWait(self.driver, 10)
wait.until(EC.visibility_of_element_located(element))
wait.until(EC.invisibility_of_element_located(element))
如果等待被删除,那么应该获得选项卡列表的代码不会带回任何元素
driver.find_elements(*BaseLocators.Locators.TAB_ELEMENTS)
答案 0 :(得分:0)
因为我们需要等待Tab Elements
所以,
而不是:
element = BaseLocators.Locators.OVERLAY_GRID
wait = WebDriverWait(self.driver, 10)
wait.until(EC.visibility_of_element_located(element))
wait.until(EC.invisibility_of_element_located(element))
尝试使用:
wait = WebDriverWait(self.driver, 10)
wait.until(EC.presence_of_all_elements_located(*BaseLocators.Locators.TAB_ELEMENTS))
正如您所提到的,elements are already 'loaded' but inaccessible due to the overlay grid
,所以使用的最佳条款是element_to_be_clickable
。在这种情况下,您可能必须将TAB_ELEMENTS
中的任何一个定义/声明为constant
,例如FIRST_TAB_ELEMENT
。 wait
并在wait = WebDriverWait(self.driver, 10)
wait.until(EC.element_to_be_clickable(*BaseLocators.Locators.FIRST_TAB_ELEMENT))
[ForeignKey("xyzzy")]
public int? UserID { get; set; } // This is a column in the table
public virtual User xyzzy { get; set; } // This is my instance of User
答案 1 :(得分:0)
我能够通过以下方式解决这个问题: grid_element实际上是由栏阻止的网格。我的猜测是我试图等待'在基页完成加载之前,所以它搞砸了。
try:
if grid_element.is_displayed and grid_element.is_enabled:
self.wait.until(EC.visibility_of_element_located(bar))
self.wait.until(EC.invisibility_of_element_located(bar))
except WebDriverException:
#error because 'another element would receive the click' meaning the overlay bar is present
self.wait.until(EC.invisibility_of_element_located(bar))