Skip to main content
 首页 » 编程设计

Python之Selenium之获取父类

2025年05月04日21kenshinobiy

我有一个网站 http://demoqa.com/registration/

我一直在尝试验证,当用户点击并关闭必填字段(例如用户名或电话号码)时,是否会在未输入任何数据时出现错误“必填字段”。

有谁知道如何验证这一点?我在想

phone = self.driver.find_element_by_xpath("//div[contains(.,'Phone Number')]") 

然后使用 getError = phone.find_element_by_xpath() 之类的东西并使用 (..) 尝试向上移动到父类,但没有成功!

我认为这很容易,但所有元素都具有相同的类名。我想我可以检查文本“此字段是必需的”,但我想保持它的整洁并编写一个方法,以便我可以在每个字段上使用它。

我今天花了很多时间寻找它并尝试不同的东西,所以任何帮助或想法都会很棒。

谢谢!

其他信息:

我可以告诉您单击该字段之前和之后发生的情况。我对解决此问题的最佳猜测是验证字段“电话号码”的类名,然后在单击后验证类名是否已更改。如您所见,顶部是点击关闭之前,下方是所需字段文本出现时

<div class="fieldset"> 
    <label class="" for="phone_9">Phone Number</label> 
    <input id="phone_9" class="input_fields piereg_validate[required,custom[phone_international]]" type="text" value="" placeholder="" name="phone_9"> 
</div> 
 
 
<div class="fieldset error"> 
    <label class="" for="phone_9">Phone Number</label> 
    <input id="phone_9" class="input_fields  
 piereg_validate[required,custom[phone_international]]" type="text" value=""  
 placeholder="" name="phone_9"> 
    <div class="legend_txt"> 
        <span class="legend error">* This field is required</span> 
    </div> 
 </div> 

请您参考如下方法:

我有我的解决方案*我认为

看到所需消息出现时“div 类名”如何变化,我有一个解决方案。我首先找到元素,通过使用 (..) 向上一级获取它的父名称,我验证它是否应该命名为“fieldset”。我想触发错误消息,并重复该过程但确保“fieldset”已更改为“fieldset error”

getElementBase = self.driver.find_element_by_id('phone_9') 
getElementClassRoot = getElementBase.find_element_by_xpath('..') 
getElementClassRootName = getElementClassRoot.get_attribute('class')