我尝试使用XPath检查(单击)此复选框,但到目前为止,我的所有尝试都失败了,因为它们单击了图例中的链接(Lorem )

HTML源:

<div class="input-outer checkbox">
<div class="section-head sec-head2">
<!---->
<div class="pull-left">Tick this box</div>
<!----><!---->
<p aria-label="required" class="requiredAsteric">*</p>
</div>
<div class="input-validation">
<div class="input-icon-outer">
<!---->
<!---->
<!---->
<!---->
<input class="filled-in ng-untouched ng-pristine ng-invalid" type="checkbox" aria-label="Acceptera villkor" aria-required="true" aria-describedby="err_icon_prefix2_1" id="icon_prefix2_1"><!---->
<label class="leadform-checkbox" tabindex="0" for="icon_prefix2_1">
<div>
<p>Lorem ipsum dolor sit amet, consectetur <a href="https://www.google.com" target="_blank">adipiscing elit</a> adipiscing elit , sed do <a href="https://www.stackexchange.com" target="_blank">eiusmod tempor </a> incididunt ut labore et dolore magna aliqua.</p>
</div>
</label>
<!---->
</div>
</div>
</div>到目前为止,我已经尝试过这三种XPaths,但它们都不起作用。
//label[@class='leadform-checkbox']/div";
//input[@aria-label='Tick this box']";
(//div[@class='input-icon-outer'])[3]";如果我正确理解HTML (我可能不理解),他们就不会使用内置到HTML中的复选框功能,而是创建了一个CSS类,其中包含一个看起来像复选框的图形元素。现在,当我向使用这种样式的div发送单击时,单击结束于div的文本内容,而不是复选框,然后单击找到的链接。
我对事情的理解正确吗?我如何修复这个/直接点击到广场?
编辑:在这个“对话框”中还有另外两个文本字段。使用这两个XPaths访问它们没有问题:
String xpText = "//input[@aria-label='text']";
String xpNumber = "//input[@aria-label='number']";这三个元素都在同一个iframe中。在这些步骤之前,我在main content和不同的iframes之间执行几个开关。
heading 2.2位于上面HTML源代码的屏幕截图顶部的<div class="input-outer">中,所以我很确定我在正确的框架/内容中。此外,我可以访问属于此复选框的文本中的链接。
包括下面的整个对话框,以使它更容易得到一个概述。

发布于 2020-12-13 22:42:01
//input[@aria-label='Tick this box']应该能做到这一点。
发布于 2020-12-19 20:26:53
当您检查元素时,请确保您正在使用HTML中的行,这是所需元素的突出显示。如果它不能工作,请确保页面中没有
发布于 2020-12-24 13:59:43
若要在复选框上使用click(),可以使用下列基于xpath的定位器策略之一
<label>标记属性:
driver.find_element_by_xpath("//label@for='icon_prefix2_1'").click()<p>标记属性:
driver.find_element_by_xpath("//label@class='leadform-checkbox'.//pcontains(.,'Lorem ipsum dolor sit amet‘)]//前面::input1 1“).click()<input>标记属性:
driver.find_element_by_xpath("//input@class='filled-in ng-未接触ng-原始ng-无效‘和@aria-标签=’受主翅目绒毛‘).click()理想情况下,要单击需要为WebDriverWait诱导element_to_be_clickable()的元素,可以使用以下基于xpath的定位器策略之一
<label>标记属性:
(驱动程序,20).until(EC.element_to_be_clickable((By.XPATH,“//label@WebDriverWait=‘图标_前缀2_1’”).click()<p>标记属性:
20).until(EC.element_to_be_clickable((By.XPATH,"//label@class='leadform-checkbox'.//pcontains(.,'Lorem ipsum dolor WebDriverWait]//WebDriverWait::input1 1“)).click()<input>标记属性:
(驱动程序,20).until(EC.element_to_be_clickable((By.XPATH,“//input@class=‘WebDriverWait=’填充ng-未触及的ng-原始ng-无效‘和@aria-label='Acceptera’)).click()https://stackoverflow.com/questions/65281371
复制相似问题