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
Python xpath定位按钮文本_Python_Selenium_Xpath_Webdriver - Fatal编程技术网

Python xpath定位按钮文本

Python xpath定位按钮文本,python,selenium,xpath,webdriver,Python,Selenium,Xpath,Webdriver,我试图找到一个按钮通常是我的正常风格,这一直工作到现在。我怀疑是因为间隔。我试图用“受让人”来定位。我使用SeleniumWebDriver,但问题主要在于xpath。我的包装是这样的: class WebdriverChauffuerMixin(object): def locate_element(self, search_text=None, xpath=None): if not xpath: xpaths = [ "//input[@v

我试图找到一个按钮通常是我的正常风格,这一直工作到现在。我怀疑是因为间隔。我试图用“受让人”来定位。我使用SeleniumWebDriver,但问题主要在于xpath。我的包装是这样的:

class WebdriverChauffuerMixin(object):

    def locate_element(self, search_text=None, xpath=None):
        if not xpath:
            xpaths = [ "//input[@value='{text}']", "//button[normalize-space(text())='{text}']",
                  "//a[child::span[normalize-space(text())='{text}']]", "//a[normalize-space(text())='{text}']"]
        else:
            return self.find_element_by_xpath(xpath)
        try:
            return self.find_element_by_id(search_text)
        except:
            try:
                return self.find_element_by_name(search_text)
            except:
                try:
                    return self.find_element_by_class_name(search_text)
                except:
                    for path in xpaths:
                        try:
                            return self.find_element_by_xpath(path.format(text=search_text))
                        except:
                            pass
        return None

...

class FirefoxDriver(WebdriverChauffuerMixin, webdriver.Firefox):
    pass
html类似于:

        <div class="discussion-sidebar-item sidebar-assignee js-discussion-sidebar-item">
  <div class="js-issue-sidebar-form" data-url="/myproject/project/issues/new/show_partial?partial=issues%2Fsidebar%2Fnew%2Fassignees">

  <div class="select-menu js-menu-container js-select-menu  "

       data-multiple data-max-options=10>

    <button type="button"
            class="discussion-sidebar-heading discussion-sidebar-toggle js-menu-target"
            aria-label="Assign up to 10 people to this issue" aria-haspopup="true"
            data-hotkey="a">
      <svg aria-hidden="true" class="octicon octicon-gear" height="16" version="1.1" viewBox="0 0 14 16" width="14"><path d="M14 8.77v-1.6l-1.94-.64-.45-1.09.88-1.84-1.13-1.13-1.81.91-1.09-.45-.69-1.92h-1.6l-.63 1.94-1.11.45-1.84-.88-1.13 1.13.91 1.81-.45 1.09L0 7.23v1.59l1.94.64.45 1.09-.88 1.84 1.13 1.13 1.81-.91 1.09.45.69 1.92h1.59l.63-1.94 1.11-.45 1.84.88 1.13-1.13-.92-1.81.47-1.09L14 8.75v.02zM7 11c-1.66 0-3-1.34-3-3s1.34-3 3-3 3 1.34 3 3-1.34 3-3 3z"></path></svg>
      Assignees
    </button>

    <div class="select-menu-modal-holder js-menu-content js-navigation-container" aria-hidden="true">
      <div class="select-menu-modal">
        <div class="select-menu-header">
          <svg aria-label="Close" class="octicon octicon-x js-menu-close" height="16" role="img" version="1.1" viewBox="0 0 12 16" width="12"><path d="M7.48 8l3.75 3.75-1.48 1.48L6 9.48l-3.75 3.75-1.48-1.48L4.52 8 .77 4.25l1.48-1.48L6 6.52l3.75-3.75 1.48 1.48z"></path></svg>
          <span class="select-menu-title">Assign up to 10 people to this issue</span>
        </div>


<div class="select-menu-filters">
  <div class="select-menu-text-filter">
    <input type="text" id="assignee-filter-field" class="js-filterable-field js-navigation-enable"
           placeholder="Filter people" aria-label="Type or choose a name" autocomplete="off">
  </div>
</div>

<div class="js-max-warning warning d-none">
  You can only select 10 assignees.
</div>

受让人
最多可为此问题指派10人
您只能选择10名受让人。

“//按钮[normalize space(text())='{text}']”的xpath
在此位置之前一直有效。我如何抓取显示
受让人的
按钮
元素?Ty

如果是空格/填充问题,您是否尝试过使用XPATH的
包含
功能?例如:
“//input[contains(@value,{text}')]”
等。

如果是空格/填充问题,您是否尝试过使用XPATH的
contains
功能?例如:
“//input[contains(@value,{text}')]”
等。

您可能会找到下面带有
XPath
表达式的按钮:

"//button[normalize-space(.)='{text}']"

您可以检查以获取有关如何使用文本内容在
XPath

中定位元素的更多信息。您可以找到下面带有
XPath
表达式的按钮:

"//button[normalize-space(.)='{text}']"

您可以检查以获取有关如何使用文本内容在
XPath

中定位元素的更多信息。是的,这很有效。我在另一次搜索中很幸运。这两个答案都很好,这适用于任何文本,如果你足够具体,你会知道这是有效的。我在另一次搜索中很幸运。两个答案都很好,这适用于任何文本如果你足够具体,你会发现两个答案都很好,两个答案都很好,泰