[英]How to match multiple element tags with single XPath
我想创建允许填写注册,授权和其他文本形式的功能。 就像是:
def fill_form(my_list):
forms = driver.find_elements_by_xpath(common_xpath)
for element in forms:
element.send_keys(my_list[forms.index(element)])
它应该获取要发送到<input type="text">
, <input type="password">
和<textarea>
元素的文本值列表作为参数。
到目前为止,我有:
common_xpath ='//input[@type="text" or @type="password"]'
但我不明白如何在此XPath
添加textarea
元素以匹配它
不知道这是否能满足您的要求,但是,从我可以看到的Xpath可以完成工作:
common_xpath = "//*[self::input[@type='text'] or self::input[@type='password'] or self::textarea]"
我不使用Python进行编程,而是在Chrome的控制台中尝试了该操作(使用$x("...")
),它似乎可以满足您的要求。 您应该考虑在表单( path/to/your/form//*
...)内部调用该XPath,以使其更加具体。
直到您可以在Xpath中选择其他标签:)
查看此相关答案以获取更多信息。
最后,作为个人说明,我对Selenium并没有那种经验,但是我建议您考虑使用PageObject模型设计模式,以使测试更易于维护。 希望对你有效。
我不了解Python,但这就是我在JAVa中要做的事情
String [] commanXpath= {"text", "password"};
String xpathVar= "//input[@type='"+commanXpath[index]+"']";
System.out.println(xpathVar);
By common_xpath= By.xpath(xpathVar);
看看是否可以在Python中实现类似的逻辑。 您还可以使用确切的html标签更新原始帖子吗?
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.