Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/python/294.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
如何获取动态webtable(python、selenium)中列中数据的xpath_Python_Selenium_Xpath - Fatal编程技术网

如何获取动态webtable(python、selenium)中列中数据的xpath

如何获取动态webtable(python、selenium)中列中数据的xpath,python,selenium,xpath,Python,Selenium,Xpath,我有以下动态webtable (checkbox) ID_No country_code Date Time UserName FileName 1 5 10/04/2019 12:05:45 xyz@gmail.com filename1 2 7 10/04/2019 13:05:45

我有以下动态webtable

(checkbox)   ID_No  country_code  Date          Time           UserName          FileName
            1       5           10/04/2019    12:05:45       xyz@gmail.com      filename1
            2       7           10/04/2019    13:05:45       pqr@gmail.com      filename2
            3       8           10/03/2019    14:05:45       pqr@gmail.com      filename2
            4       9           10/04/2019    14:08:45       pqr@gmail.com      filename1

在id_no的左侧有一个复选框。我只想检查FileName='filename1'所在的行 日期为2019年4月10日

当我在chrome控制台中使用此xpath时:$x//tr[td[containstext,'filename1'][0]'

这包含包含filename1值的第一行

<tr class="class1">
  <td width="2%"> </td>   <!–– checkbox ––>
  <td width="2%"> 1 </td>
  <td width="2%"> 5 </td>
  <td width="2%"> 10/04/2019 </td>
  <td width="2%"> 12:05:45 </td>
  <td width="2%" style=word-wrap:break-word> xyz@gmail.com </td>
  <td width="2%"> filename1 </td>
</tr>

如何选中FileName='filename1'和Date='10/04/2019'的复选框


另外,如何取消选中复选框?

您可以通过单击输入元素以与选中复选框相同的方式取消选中复选框

您提供的XPath定位器很好。要选择td下方的其他输入元素,只需更改文本:

driver.find_element_by_xpath("//tr[td[contains(text(),'10/04/2019')]]/input").click()
要查找两者的输入,可以使用以下方法:

driver.find_element_by_xpath("//tr[td[contains(text(),'filename1')] and td[contains(text(),'10/04/2019')]]/input").click()

希望这能有所帮助。

您可以通过单击输入元素来取消选中框,方法与选中框相同

您提供的XPath定位器很好。要选择td下方的其他输入元素,只需更改文本:

driver.find_element_by_xpath("//tr[td[contains(text(),'10/04/2019')]]/input").click()
要查找两者的输入,可以使用以下方法:

driver.find_element_by_xpath("//tr[td[contains(text(),'filename1')] and td[contains(text(),'10/04/2019')]]/input").click()

希望这能有所帮助。

下面的代码将选中并取消选中FileName='filename1'和Date='10/04/2019'的复选框

driver.find_element_by_xpath("//tr[td[contains(text(),'10/04/2019')] and td[contains(text(),'filename1')] ]//input").click()

下面的代码将选中或取消选中FileName='filename1'和Date='10/04/2019'处的复选框

driver.find_element_by_xpath("//tr[td[contains(text(),'10/04/2019')] and td[contains(text(),'filename1')] ]//input").click()

您发布的HTML缺少要单击的输入。根据您对该表的描述,我假设它位于该行的第一个TD内,如下所示

<tr class="class1">
  <td width="2%"> <input type="checkbox"> </td>   <!–– checkbox ––>
  <td width="2%"> 1 </td>
  <td width="2%"> 5 </td>
  <td width="2%"> 10/04/2019 </td>
  <td width="2%"> 12:05:45 </td>
  <td width="2%" style=word-wrap:break-word> xyz@gmail.com </td>
  <td width="2%"> filename1 </td>
</tr>
如果您计划将此定位器与其他文件名和日期一起重用,我将在定位器中插入变量。有很多方法可以使用python将变量插入字符串中。如果您使用的是Python3.6,那么可以使用下面的示例

//tr[./td[.=' {filename} ']][./td[.=' {date} ']]/td/input

现在,您可以创建一个方法并传入文件名和日期,然后轻松返回正确的输入。

您发布的HTML缺少要单击的输入。根据您对该表的描述,我假设它位于该行的第一个TD内,如下所示

<tr class="class1">
  <td width="2%"> <input type="checkbox"> </td>   <!–– checkbox ––>
  <td width="2%"> 1 </td>
  <td width="2%"> 5 </td>
  <td width="2%"> 10/04/2019 </td>
  <td width="2%"> 12:05:45 </td>
  <td width="2%" style=word-wrap:break-word> xyz@gmail.com </td>
  <td width="2%"> filename1 </td>
</tr>
如果您计划将此定位器与其他文件名和日期一起重用,我将在定位器中插入变量。有很多方法可以使用python将变量插入字符串中。如果您使用的是Python3.6,那么可以使用下面的示例

//tr[./td[.=' {filename} ']][./td[.=' {date} ']]/td/input
现在,您可以创建一个方法,传入文件名和日期,并轻松返回正确的输入。

您能试试吗? $x'//tr[td[containstext,filename1]和td[containstext,10/04/2019]] 对不起,我误解了。我更新了答案。

你能试试这个吗? $x'//tr[td[containstext,filename1]和td[containstext,10/04/2019]]
对不起,我误解了。我更新了答案。

谢谢,但我在使用驱动程序时没有得到正确的答案。通过xpath//tr[td[containstext,'filename1'和containstext,'10/04/2019']]/input查找元素。单击此处您正在查找相同两个td元素中的文本,但filename1和10/04/2019在单独的td元素中。这将是查找包含td元素且具有filename1和2019年4月10日的tr的正确路径://tr[td[containstext,'filename1']和td[containstext,'2019年4月10日']]/inputHanks,但我在使用driver时没有得到正确的结果。通过xpath//tr[td[containstext,'filename1'和containstext,'2019年4月10日]]/input.clickYou正在此处查找相同两个td元素中的文本,但filename1和2019年4月10日在此处单独的td元素中。这将是查找包含td元素且具有filename1和2019年4月10日/tr[td[containstext,'filename1']和td[containstext,'10/04/2019']/input的tr的正确路径