Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/python/287.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
Python-查找Xpath值,然后单击按钮_Python_Pycharm - Fatal编程技术网

Python-查找Xpath值,然后单击按钮

Python-查找Xpath值,然后单击按钮,python,pycharm,Python,Pycharm,我想获得一些关于如何在特定xpath值中查找值的建议,在我的例子中,时间是:7:30pm。 然后在同一级别中单击“添加”按钮。(页面中有许多其他具有不同时间值的相同按钮)。参考附件图片,非常感谢您的帮助 可能DevTools中的每个web浏览器都有右键单击获取XPATH的功能 但您也可以尝试为元素查找唯一的ID或CLASS(或其他唯一值,即样式=…)。或其父母或祖父母的唯一价值 如果有许多类似的元素,那么您可以获取所有元素,然后使用index-all\u times[1]-只处理一个元素 您的元

我想获得一些关于如何在特定xpath值中查找值的建议,在我的例子中,时间是:7:30pm。 然后在同一级别中单击“添加”按钮。(页面中有许多其他具有不同时间值的相同按钮)。参考附件图片,非常感谢您的帮助


可能
DevTools
中的每个web浏览器都有右键单击获取
XPATH
的功能

但您也可以尝试为元素查找唯一的
ID
CLASS
(或其他唯一值,即
样式=…
)。或其父母或祖父母的唯一价值

如果有许多类似的元素,那么您可以获取所有元素,然后使用
index
-
all\u times[1]
-只处理一个元素

您的元素似乎有唯一的
headers=“Times”
,可以在
xpath
中使用

您还可以相对
xpath
(从点开始
)进行部分搜索-首先查找
tr
,然后在此
tr
中查找
//td[@headers=“Times”]
,然后在同一
tr
中查找
//td[@headers=“available”]/div/a


编辑:


如果我找不到唯一的元素,那么我会得到所有
tr
,因为它是
时间
available
的父元素,我可以使用相对xpath在单个
tr
中搜索一个
时间
和一个
available
,然后对
循环使用

 all_tr = html.xpath("//tr")

 for tr in all_tr: 

     # relative xpath in `tr` (using `.` at start)
     header = tr.xpath('.//td[@headers="Times"')

     if "7:30" in header[0].text: 

         # relative xpath in `tr` (using `.` at start)
         avaliable = tr.xpath('.//td[@headers="Avaliable"]')

         avaliable[0].click()

可以在结束问题之前,您是否只需右键单击元素并复制完整的xpath。永远不要有代码或异常的图像。请参阅,也许DevTools中的每个web浏览器都有右键单击获取XPATH的功能。但您也可以尝试查找元素的unque ID或类。如果有许多类似的元素,那么您可以获取所有元素,然后使用
index
-
all_times[1]
-只处理一个元素。Daisho:xpath包含许多结果,我可以使用xpath查找按钮本身,但该表将添加新的额外可用时间,以便每天预订。Lakshya Raj:谢谢你的评论,我试图修改我的帖子,但我不能添加代码,它提到我不能上传照片,但我不能删除它。问题是有很多标题=“次”,它们都是一样的。(他们每天也在不断添加)。手动计算所需的列表,并使用
[index]
获得所需的列表。如果您需要准确的时间
7:30pm.
则获取所有
tr
并检查每个
tr
中的时间,直到找到
7:30pm
。您不必为此仅使用xpath。最后,您可以尝试将
xpath
contains(@text,'7:30pm')
结合使用,谢谢您的回复。我是编程新手,我很难在帖子中发布原始代码:)很抱歉使用了代码图片。如果我理解正确,我需要存储两个变量,所有时间和按钮点击链接到索引中,比如:all_times[1],并将7:30pm与索引中的信息进行比较,然后我应该能够调用单击链接地址?我将获得所有
tr
,因为它是
Header
available
的父级,然后在all_tr:Header=xpath(…)中为tr使用
;如果header.text中的“7:30”:xpath(…可用…)。单击()。我在答案中添加了伪代码