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

单击不使用Selenium的元素

云弘壮
2023-03-14

我正试图点击一个硒元素。它是一个复选框,包含以下HTML代码:

包含复选框和术语的段落代码:

<p class="jss72 jss80 jss927 jss943 jss930">
    <span class="js122">
        <img src="/images/purple.svg">
    </span>
    <span class="jss941">
        I Agree To The Terms
    </span>
</p>

我尝试过三种不同的方法,但都不奏效:

//Tried with xpath clicking on image: Error: Element not interactable   
driver.FindElement(By.XPath("//img[@src='/images/purple.svg']")).Click();

//Tried with Xpath by selecting the span 
driver.FindElement(By.XPath("//span[@class='js122')]")).Click();

//Tried with CssSelector Error: Element not interactable  
driver.FindElement(By.CssSelector("img[src*='purple.svg']")).Click();

请帮助解决其他问题。

共有3个答案

赫连法
2023-03-14

我在您共享的html中没有看到复选框:

<p class="jss72 jss80 jss927 jss943 jss930">
    <span class="js122">
        <img src="/images/purple.svg">
    </span>
    <span class="jss941">
        I Agree To The Terms
    </span>
</p>

我希望看到像这样的事情

<input type='checkbox'/>

而不是复选框旁边的文本段落。

商绍元
2023-03-14

在尝试查找元素之前,需要切换该帧或弹出窗口。

这样做;

driver.switchTo().frame(<yourFrameIndex>);

或者

driver.switchTo().activeElement();
萧宏峻
2023-03-14

ElementNotInteractitableException是由于Selenium执行代码与浏览器在页面上执行JavaScript之间存在竞争条件而发生的。要单击的图元存在于立交桥中。我敢打赌,当立交桥出现时,动画会淡入淡出。有一个短暂的时刻,您可以看到复选框,Selenium可以在DOM中找到它,但Selenium不能单击它。解决方案非常简单。使用显式等待:

var wait = new WebDriverWait(driver, TimeSpan.FromSeconds(10));

// The 'd' parameter to the lambda expression is an IWebDriver object
wait.Until(d => d.FindElement(By.XPath("//img[@src='/images/purple.svg']")).Click());
 类似资料:
  • 我试图使用Selenium来单击::after伪元素。我意识到这无法通过WebDriver直接实现,但似乎无法找到一种使用Javascript实现的方法。 下面是DOM的外观: 上面的元素是这样的。对象的左边是按钮元素,后面的:元素是右边,箭头在单击时会下拉框。正如你所看到的,右边没有任何标识符,这就是为什么很难做到这一点的部分原因。 我在stackoverflow中看到了这两个链接,并试图将答案

  • 如何使用selenium Python从主机A(在本例中为jsfiddle.net)单击此处的红色按钮?(java脚本限制策略错误,不让我去做)。我也不想直接点击红色按钮。谢了。

  • 我搞不懂这个。 我在这个网站上工作,我使用Python中的selenium来单击类名“yellow showPopupUnder”下的第一个元素(屏幕的主要部分有20行关于房屋的黄色信息)。 当我让Selenium点击该行后,它会打开并显示更多信息。我对有“选中”和“未选中”框的部分感兴趣。这些复选框位于这样的div中: 未选中的框位于一个div中,如下所示: 我试着用几种方法联系他们: 我还尝试

  • 我有一个带有几个圆形和矩形元素的SVG对象。使用webdriver,我可以单击主svg对象,但不能单击其中的任何元素。问题似乎只出在点击(或任何鼠标交互)上,因为我可以使用getAttribute()返回宽度、ID、x/y、text等值,用于它下面的任何内容。 下面是HTML的一个示例: 以及WebDriver试图右键单击矩形元素(失败)的示例: 但这会起作用,并返回一个值: 当WebDriver

  • 我试图点击一个按钮,它出现在图的右侧(图上方的三行),最后想点击“下载为CSV”。我的代码如下。 File=WebDriverWait(驱动程序,20).until(ec.element_to_be_clickable((by.xpath,'//*[@id=“HighCharts-3SLSA4F-0”]/div[2]/ul/li[6]')).click()#下载为csv 错误:引发TimeoutE

  • 我想点击element with href删除FB组中的挂起的帖子,但是selenium在第二个之后崩溃。使用相同的循环,我可以添加帖子到组没有任何问题;“Delete Button”列表是有效的,因为当我尝试时,我会得到真实的位置。 线程“main”org.openqa.selenium.elementNotinteractableException:构建信息:版本:'3.4.0',修订:'un