Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/python-3.x/15.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 3.x Xpath错误:没有这样的元素:无法定位。将sublime文本编辑器与最新版本的chrome80及其Web驱动程序配合使用_Python 3.x_Selenium Webdriver_Automation - Fatal编程技术网

Python 3.x Xpath错误:没有这样的元素:无法定位。将sublime文本编辑器与最新版本的chrome80及其Web驱动程序配合使用

Python 3.x Xpath错误:没有这样的元素:无法定位。将sublime文本编辑器与最新版本的chrome80及其Web驱动程序配合使用,python-3.x,selenium-webdriver,automation,Python 3.x,Selenium Webdriver,Automation,我曾尝试通过XPath多种方式查找元素,但未能找到 代码: HTML: 您的xpath正在查找标记为href的元素,该元素不存在。所讨论的元素具有标记a。如果没有看到HTML的其余部分,我无法100%确定,但是根据您发布的内容,这个xpath可能会起作用: "//a[@text()='3:00 PM' and @data-day_ident='2021-05-25']" 编辑:如果您正试图从页面上显示的选项/链接中删除时间/日期,则以下操作应有效: elements = d

我曾尝试通过XPath多种方式查找元素,但未能找到

代码:

HTML:


您的xpath正在查找标记为
href
的元素,该元素不存在。所讨论的元素具有标记
a
。如果没有看到HTML的其余部分,我无法100%确定,但是根据您发布的内容,这个xpath可能会起作用:

"//a[@text()='3:00 PM' and @data-day_ident='2021-05-25']"
编辑:如果您正试图从页面上显示的选项/链接中删除时间/日期,则以下操作应有效:

elements = driver.find_elements_by_css_selector('a.res-timeslot-select')
for element in elements:
    print(element.text + ' on ' + element.get_attribute('data-day_indent'))

要根据日期和时间使用XPath选择时间段,可以使用以下XPath选择5月23日的唯一可用时间段:

driver.find_elementss_by_xpath('//a[@data-day_ident='2021-05-23']')
要选择5月24日的
0:00
时段,您可以使用以下选项:

//a[@data-day_ident='2021-05-24' and (text()='0:00')]
要选择5月24日的
1:30
时段,请使用此

//a[@data-day_ident='2021-05-24' and (text()='1:30')]
等等。

我希望现在可以清楚地知道如何根据日期和时间选择其他时段。

您发布的定位器有两个问题

//href[@text()='3:00 PM' and @data-day_ident='2021-05-25']
  ^ href is an attribute of an A tag, not an element
       ^ remove @
  • 没有元素
    href
    。元素是一个标记
  • @text()
    应该是
    text()
    @
    符号表示属性,但
    text()
    是一种方法
  • 因此,您的XPath应该是

    //a[text()='3:00 PM' and @data-day_ident='2021-05-25']
      ^ A is the element
    
    这个问题是插槽当前不可用。目前唯一可用的插槽是5/23下午1:30、5/24凌晨12:00和5/24凌晨1:30。您的定位器正在查找5/25下午3:00。如果你改成

    //a[text()='1:30 PM' and @data-day_ident='2021-05-23']
    

    它会起作用。

    请通过添加解释来澄清您的问题。另外,请编辑/格式化您的问题,使其易于查看代码、文本等。您好,我已尽力解释。不,仍然是相同的错误。这是html。如果您在任何时间(如下午3:00)进行检查,请预留该时间。您可以查看他们的html代码。我正在尝试获取下午3:00或任何给定时间的链接。您提供的链接中不存在该元素。如果您试图获取文本,则不应使用它来标识元素。也就是说,我在回答中添加了一个编辑,可以从每个链接元素中获取文本。谢谢,但是如果我们通过css选择器进行选择,则(.res timeslot select)在所有日期中都很常见。这就是为什么我想使用Xpath获取特定时间。请帮助我为给定日期的特定时间段创建相对Xpath。我选择2021年5月25日,因为我之前写了几行代码将我登录到他们的系统,这就是为什么我可以访问更多的时间段。没问题,但我看到只有3个可用时间段:1个用于5月23日,2个用于5月24日。要查看更多信息,需要在我没有凭据时登录。我已更新了我的答案。我希望现在一切都清楚了?我们可以在不登录的情况下看到3个以上的可用插槽。要查看更多信息,需要注册并登录。主题启动者已登录,因此他可以看到比这3个插槽多得多的内容。@Prophet我仍看到3个插槽未登录,但这与问题无关。关键是要纠正两个错误,定位器才能正常工作。
    //href[@text()='3:00 PM' and @data-day_ident='2021-05-25']
      ^ href is an attribute of an A tag, not an element
           ^ remove @
    
    //a[text()='3:00 PM' and @data-day_ident='2021-05-25']
      ^ A is the element
    
    //a[text()='1:30 PM' and @data-day_ident='2021-05-23']