gpt4 book ai didi

c# - 当 html 属性更改值以显示字段有效时如何在 selenium c# 中编码?

转载 作者:太空宇宙 更新时间:2023-11-03 15:00:50 24 4
gpt4 key购买 nike

我在下面有一个方法,我在其中输入邮政编码,选择查找地址按钮,我希望某些字段可见:

    public void CompletePostcodeLookup()
{
_driver.FindElement(PaymentDetailsResponsiveElements.PostcodeLookupField).SendKeys("LS11 9AW");
_driver.FindElement(PaymentDetailsResponsiveElements.FindAddressBtn).Click();


_driver.WaitToBeInvisible(PaymentDetailsResponsiveElements.FindAddressBtn, 5);
_driver.WaitToBeVisible(PaymentDetailsResponsiveElements.AddressManualHouseNumberField, 5);
_driver.WaitToBeVisible(PaymentDetailsResponsiveElements.AddressLineOneField, 5);
_driver.WaitToBeVisible(PaymentDetailsResponsiveElements.AddressCityField, 5);
_driver.WaitToBeVisible(PaymentDetailsResponsiveElements.AddressManualPostcodeField, 5);
_driver.WaitToBeVisible(PaymentDetailsResponsiveElements.AddressCounty, 5);

}

现在我不仅希望这些字段可见,而且这些字段应该是有效的,在 HTML 中我们可以确定这些字段基于此...

<input... aria-invalid='false'>

所以我在 PaymentDetailsResponsiveElements.cs 页面中所做的是包含一个方法,该方法可以找到包含此内容的任何输入:

 public static By ValidFields => By.XPath("//input[@aria-invalid='false']");

现在这可能是不正确的做事方式,但我想知道如果我想检查所有这些可见字段是否有效,正确的编码方式是什么?我什至应该将它们放在“断言”中吗?

编辑:

我将所有方法都包含在一个方法中,如果我可以基于这些方法中没有一个具有无效字段来进行断言,那么应该没问题:

public void CompleteContactDetailsForm()
{
SelectBookingContact();
CompletePostcodeLookup();
CompletePhoneNumberFields();
CompleteEmailAddressFields();

}

谢谢

最佳答案

第一种方式:您可以考虑编写一个 for 循环来检查每个 webElement 是否具有值:invalid='false'(您可以通过编写简单的解析器来做到这一点)

第二种方式:您可以通过读取数组列表中所需 Web 元素的完整列表并使用像 here 这样的迭代器对其进行迭代来完成此操作。

关于 Assert,它应该放在最后一步(您调用此案例的 .cs 文件)。

关于c# - 当 html 属性更改值以显示字段有效时如何在 selenium c# 中编码?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/46254530/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com