Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/selenium/4.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
如何通过Selenium Python单击表中的元素_Python_Selenium_Xpath_Css Selectors_Webdriver - Fatal编程技术网

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

如何通过Selenium Python单击表中的元素,python,selenium,xpath,css-selectors,webdriver,Python,Selenium,Xpath,Css Selectors,Webdriver,我想单击表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%"

我想单击表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>

错误是:

selenium.common.exceptions.NoSuchElementException:消息:没有这样的元素:无法定位元素:{“方法”:“xpath”,“选择器”:“/*[@id=“1”]/td[2]”

请尝试以下XPath:

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


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

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

//td[@name='ContractDesc' and normalize-space(.)='EEE']
在文本为EEE的元素上单击()
,可以使用以下任一解决方案:

  • 使用
    CSS\u选择器

    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()
    

表格是否在
IFRAME
中?是的,我想它在框架上,JeffC先生。@TZJ4,情况如何?你核对我的答案了吗?谢谢。@RatmirAsanov没人能用,整个答案都有错误,比如“找不到元素”。感谢you@TZJ4,向我们显示更多HTML(iframe或弹出窗口或其他您需要的web元素所在的内容)。谢谢您,先生,但仍然出现错误“找不到元素:”请检查它是否在iframe中,如果是,您需要使用以下命令将驱动程序切换到iframe:
WebElement iframe=driver.findElement(by.tagName(“iframe”)然后
驱动程序.switchTo().frame(iFrame)
然后您需要通过
驱动程序单击元素。通过xpath(//td[@name='ContractDesc'])查找元素。单击()
如果要切换到默认上下文,则可以使用
驱动程序。切换到().defaultContent()请尝试一下,并让我知道它是否有效。我也在编辑我的答案。非常感谢,但是CSS返回错误“A18-0110”和XPATH返回“找不到元素”:
driver.find_element_by_css_selector("table.tablelist#table1 tr#1 td[name='ContractDesc']").click()
driver.find_element_by_xpath("//table[@class='tablelist' and @id='table1']//tr[@id='1']//td[@name='ContractDesc' and normalize-space()='EEE']").click()