【问题标题】:Python code for Reading Text Label Associated wit Toggle switch in Selenium用于读取与 Selenium 中的切换开关关联的文本标签的 Python 代码
【发布时间】:2020-06-17 00:18:14
【问题描述】:

我正在尝试使用 selenium 代码打开/关闭切换开关。问题是我想通过它的“文本标签”而不是它的 ID 或名称来访问切换开关。这是开关的 HTML

<input type="checkbox" name="ot-group-id-C0002" class="switch-checkbox category-switch-handler" id="ot-group-id-C0002" aria-checked="true" aria-controls="ot-desc-id-C0002" aria-labelledby="ot-header-id-C0002" data-optanongroupid="C0002" checked="true" tabindex="0">
<label class="switch-label" for="ot-group-id-C0002">
    <span class="switch-inner"></span> 
    <span class="switch-nob"></span> 
    <span class="label-text">Performance Cookies</span>
</label>

我想通过文本“Performance Cookies”而不是其 ID 或名称来访问切换开关。

【问题讨论】:

  • 请您的代码试用

标签: python selenium selenium-webdriver


【解决方案1】:

您可以阅读我对类似问题 here 的回答,了解在 selenium 中使用 xpath 的详细信息。

其他信息我没有提到,但会帮助你:

按我们使用的文本搜索:

//*[text()='Performance Cookies']

为了得到它的父(标签),我们使用:

ancestor::label

获取前面的(之前的标签/元素),这是我们使用的输入

preceding::input

现在结合所有这些,我们得到:

//*[text()='Performance Cookies']/ancestor::label/preceding::input[@type='checkbox']

【讨论】:

  • 感谢您的帮助,但代码似乎在做一些奇怪的事情..无论我输入什么,它都会找到相同的元素 text() = ..... 例如对于代码: MyVar = browser.find_element_by_xpath("//*[text()='Performance Cookies']/ancestor::label/preceding::input[@type='checkbox']") 和 MyVar = browser.find_element_by_xpath ("//*[text()='Functional Cookies']/ancestor::label/preceding::input[@type='checkbox']") 似乎选择了相同的元素。即功能性 cookie 切换开关。知道为什么会发生这种情况吗?
  • 如果不查看完整的 html 代码,我很难说出为什么会出错,我建议您使用 google chrome,打开网站,检查元素,ctrl + f 或 cmd + f,输入在 xpath 中,您可以进行反复试验,为什么它可以工作/不工作。它将通过选择它(黄色)来显示 xpath 指向的元素,如上图所示。
  • 嗯...可能只有我一个人 :) 这是我在这个论坛上发布的第四个查询.. 他们似乎都没有关闭并给我最终的答案 :) .. 不管怎样... 非常感谢你的帮助!欣赏它。问题仍然存在..因此,如果您将来有一个灯泡时刻,请告诉我..
  • @HardBoiledPotato 这是一个包含有用细节的规范答案。但似乎 OP 没有具体的用例。
猜你喜欢
  • 1970-01-01
  • 2015-03-25
  • 2019-07-23
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2023-01-04
  • 2015-03-22
  • 2011-10-13
相关资源
最近更新 更多