当前位置: 首页 > 知识库问答 >
问题:

如何在Selenium中找到这些复选框元素

罗源
2023-03-14

我在Selenium中找不到此网站上的复选框

我尝试过:Xpath、ID、类型、操作键、文本和部分文本。我已经能够发送密钥(用户和密码)并找到user/pass元素。

>

#检查框-标签-边距

提前谢谢你的帮助,我觉得我好像在兜圈子。

共有1个答案

高慈
2023-03-14

TL;DR请参阅下面带有澄清注释的代码。

它不适用于您的原因之一可能是您需要等待表单呈现、可见和可交互。这可以通过显式等待来解决。

我注意到的另一个问题是通过点击“接受条款”。点击(<)/代码>是,因为点击发生在元素的中间,它打开了一个不需要的单独标签中的使用条款。您可以通过使用动作链单击偏移量(0,0)来解决此问题。

至于使用硒定位器进入复选框,可以通过各种不同的方式完成。在下面的代码中,我使用CSS选择器,同时检查标签元素的属性的值。

工作代码:

from selenium import webdriver
from selenium.webdriver import ActionChains
from selenium.webdriver.common.by import By
from selenium.webdriver.remote.webelement import WebElement
from selenium.webdriver.support.ui import WebDriverWait
from selenium.webdriver.support import expected_conditions as EC


driver = webdriver.Chrome()
driver.get('https://onecall.1100.com.au/au-b4-en/Account/Login')

wait = WebDriverWait(driver, 10)

# wait for the form to get visible
login_form = wait.until(EC.visibility_of_element_located((By.ID, 'loginForm')))

# accept terms
accept_terms = login_form.find_element_by_css_selector('label[for=acceptTermsAndConditions]')
ActionChains(driver).move_to_element_with_offset(accept_terms, 0, 0).click().perform()

# keep me logged in
login_form.find_element_by_css_selector('label[for=checkbox2]').click()

# take a screenshot to prove it is working
login_form.screenshot('form.png')

这就是你将在表格中看到的。png

 类似资料:
  • 我有一个带有3个复选框的html页面。每个输入框旁边都有一个文本。复选框嵌套在div标签中。 我想选择具有文本“清洁”的复选框 我的Xpath正在选择3个复选框 如何选择清除文本的复选框?它位于id为=“operations\u edit\u process\u list\u task\u 1”的div标记内 我的Xpath是: 超文本标记语言是: 谢了Riaz

  • 我无法在我的网站中找到选项卡元素。下面是tab元素的html代码: 它也不在任何iframe中。我尝试复制它的xpath,但没有成功。任何帮助都是值得的。 错误记录如下: 线程“main”组织中出现异常。openqa。硒。NoSuchElementException:没有这样的元素:无法定位元素:{“方法”:“xpath”,“选择器”:“//a[@id='tab-t0-2']”}(会话信息:chr

  • 我正在浏览一个基本上由ajax调用完全加载的网页,并包含了相应的等待: 该页面只包含一些表格和按钮,但我找不到任何带有Selenium的表格和按钮。我尝试了所有的find_element()组合,但没有任何效果。 我尝试从页面获取html源代码: 但我唯一得到的是: 虽然当我检查它时,里面包含了很多

  • 当试图使用C#运行硒测试时,我遇到了一个问题,无法检查这两个“复选框”。 这是我的第一个复选框,它确实工作并检查box。驱动程序。FindElement(By.XPath("//tag[@for='LegitimateCompany协议CheckBox']")。单击(); 但是,如果我简单地使用另一个复选框的标签,即“TermsOfServiceCheckBox”,它不会选中该框,但它实际上打开了

  • 我面临的错误截图 上面的一行显示了错误,它表示。我在堆栈溢出上看到过这种问题,但解决方案对我没有帮助

  • 问题内容: 我有如下形式: 当我选中所有复选框并发布表单时,结果如下所示: 然后我取消选中第二个复选框并发布表单,结果是这样的: 当我取消选中第二个复选框时,是否有可能得到如下所示的结果: 有想法吗? 问题答案: 第一种方法-隐藏字段(缺点:用户可以操纵字段的值(但是也可以操纵复选框的值,因此,如果只期望1或0,这不是真正的问题)) 第二种方法-为未设置的索引分配默认值: