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

如何通过Selenium Python[duplicate]单击表中的元素

冉昊
2023-03-14

我想单击表ID“ContractDesc”、“EEE”内容中的单元格:

HTML页面:

<table cellpadding="0" cellspacing="0" border="0" class="tablelist" id="table1" style="width: 80%; margin: 0px 0px 0px 0px;">
    <thead>
        <tr>
            <th style="width: 30%">
                AAA
            </th>
            <th>
                BBB
            </th>
            <th style="width: 40%">
                CCC
            </th>
        </tr>
    </thead><tbody>


    <tr id="1" onmouseout="fnMouseOut(1)" =="" ""="" onmouseover="fnMouseOver(1)" onclick="selectRow(this)" style="cursor: pointer; background-color: rgb(248, 248, 248);" projectid="111111">
        <td align="center" name="contno">
            DDD
        </td>
        <td name="ContractDesc">
            EEE
        </td>
        <td name="">
            FFF
        </td>
    </tr>

</tbody>
</table>

我的代码不起作用:

driver.find_element_by_xpath('//*[@id="1"]/td[2]').click()

driver.find_element_by_name("ContractDesc").click()

错误是:

硒。常见的例外情况。NoSuchElementException:消息:没有这样的元素:无法定位元素:{“方法”:“xpath”,“选择器”:”//*[@id=“1”]/td[2]”

共有3个答案

范翰海
2023-03-14

在文本为EEE的元素上单击(),可以使用以下任一解决方案

>

driver.find_element_by_css_selector("table.tablelist#table1 tr#1 td[name='ContractDesc']").click()

使用XPATH

driver.find_element_by_xpath("//table[@class='tablelist' and @id='table1']//tr[@id='1']//td[@name='ContractDesc' and normalize-space()='EEE']").click()
空英达
2023-03-14

试试这个XPath:

驱动程序。通过xpath(//td[@name='ContractDesc'])查找元素。单击()

请检查元素是否在iframe中,如果是,则需要使用:WebElement iframe=driver将驱动程序切换到iframe。findElement(按.tagName(“iframe”) 然后是驱动程序。切换到()。帧(iFrame)然后您需要通过给定的xpath单击元素,如果您想切换到默认上下文,那么您可以使用驱动程序。切换到()。defaultContent()

罗业
2023-03-14

您可以使用下面的xpath按名称和文本进行选择,规范化空间删除所有空白:

//td[@name='ContractDesc' and normalize-space(.)='EEE']
 类似资料:
  • 问题内容: 我有一个只具有href值作为属性的锚标记的href值。现在,我想在页面中找到与我的href值具有相同值的元素,然后单击它。我找不到使用标准selenium方法执行此操作的任何方法。如何执行此操作?基本上,这些是我找到的功能,但似乎无法使用其中任何一个: 问题答案: 您可以使用find_element_by_xpath功能。

  • 问题内容: 浏览器:Chrome V65 ChromeDriver:chromedriver.exe 2.37 网络驱动程序尝试单击元素时发生错误。以下是我的click(): 我已经等待元素可见,然后单击。但是引发异常,说“其他元素将获得点击”,如下所示: 即使我添加语句以等待ajax加载完成以单击元素,也会发生错误: 这种情况在Chrome上经常发生,可能是5次出现4次故障。没用! 现在,我必须

  • 问题内容: 我有一个具有,沿。在此之下,我还有更多元素。 目前,当我在叠加层外部单击时,我可以单击基础元素。但是,当直接在叠加层上单击时,我无法单击基础元素。 我希望能够单击此按钮,以便可以单击基础元素。 问题答案: 是的,你CAN做到这一点。 使用与IE11 CSS条件语句一起(在IE10或低于不工作),就可以得到这个问题的跨浏览器兼容的解决方案。 使用,您甚至可以将透明放置在叠加层中,并使点击

  • 问题内容: 第3、16、17、18和19行用*突出显示的含义是什么。有人可以解释他们的工作吗?我是python和编程新手 问题答案: 这段代码中只有三行用*突出显示,但这是它们的意思: 第一行: 这是在声明 后面 的函数( test_Iframe 和 tearDown )的 类* 。在面向对象的编程中,使用一个类来创建“对象” 。可以将 类 视为数据/过程的抽象,而 对象 是类的特定实例。 ***

  • 在谷歌航班页面上,我想点击对话框底部的右箭头(增加天数)(附图)。第二次点击给了我错误。 这是我的代码: 截图