python xpath定位打印元素_关于python:需要xpath定位器来显示可见元素

我正在尝试对我的网站进行测试。 在某些用户表单上遇到麻烦。 诀窍在于,表单中文本字段的数量根据用户选项的不同而有所不同(代码中存在禁用的选项,但具有样式<< x0 >>标记),因此我试图寻找一种比以下方法更灵活的方法 逐一定位每个元素,并用try / except块填充表单。

我正在使用xpath定位器

text_fields = driver.find_elements_by_xpath("//div[@class='form-line']/div[@class='form-inputs']/input[@type='text' and not(ancestor::div[@style='display: none;'])]")

麻烦的是萤火虫只查找需要的元素,但是当我使用它的硒脚本时,即使没有<< x0 >>标记,打印text_fields的列表也能给我所有元素

我怎样才能只获得可见元素?

PS对不起,我的英语不好^ _ ^

def make_an_order(驱动程序):text_fields = driver.find_elements_by_xpath(" // div [@ class = form-line] / div [@ class = form-inputs] / input [@ type = text")for text_fields中的字段:尝试: field.clear()除外:通过找到解决方案。 但是这个问题仍然很有趣

是注入jQuery并使用:visible选择器吗?

您可以按通常方式获取所有表单元素,然后在列表上进行迭代并删除在is_displayed()上不返回true的那些元素。

谢谢,您的方法很好用!

尝试contains()方法:

text_fields = driver.find_elements_by_xpath(

"//div[@class='form-line']/div[@class='form-inputs']/input[@type='text' and

not(ancestor::div[contains(@style, 'display: none;')])]")

重要的部分是:

div[contains(@style, 'display: none;')]

请注意,如果样式包含字符串display:none;或display:none,则选择器将不匹配。

我忘了提,但是我首先尝试了contains()方法。 相同的故事

请发布您的html

我使用以下内容,效果很好。

self.assertTrue(driver.find_element_by_xpath("//div[@id='game_icons']/div/div[2]/div/a/img"))

当然,这是针对Selenium和Python的。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值