繁体   English   中英

如何将 select 元素在 Selenium 上使用 XPATH 语法用于 Python?

[英]How to select element using XPATH syntax on Selenium for Python?

考虑以下 HTML:

<div id='a'>
  <div>
    <a class='click'>abc</a>
  </div>
</div>

我想点击 abc,但包装 div 可能会改变,所以

driver.get_element_by_xpath("//div[@id='a']/div/a[@class='click']")

这不是我想要的

我试过了:

 driver.get_element_by_xpath("//div[@id='a']").get_element_by_xpath(.//a[@class='click']")

但这不适用于更深的嵌套

有任何想法吗?

HTML

<div id='a'>
  <div>
    <a class='click'>abc</a>
  </div>
</div>

您可以将XPATH用作:

//div[@id='a']//a[@class='click']

输出

<a class="click">abc</a>

也就是说你的 Python 代码应该是:

driver.find_element_by_xpath("//div[@id='a']//a[@class='click']")

在最新版本 4.x 中,现在是:

elem = driver.find_element(By.XPATH, "/html/body/div[1]/div/div[2]/h2/a")

导入By

from selenium.webdriver.common.by import By

查看Martin Thoma 的这篇博客。 我在 MacOS Mojave 上测试了以下代码,它按规定工作。

> def get_browser():
>     """Get the browser (a "driver")."""
>     # find the path with 'which chromedriver'
>     path_to_chromedriver = ('/home/moose/GitHub/algorithms/scraping/'
>                             'venv/bin/chromedriver')
>     download_dir = "/home/moose/selenium-download/"
>     print("Is directory: {}".format(os.path.isdir(download_dir)))
> 
>     from selenium.webdriver.chrome.options import Options
>     chrome_options = Options()
>     chrome_options.add_experimental_option('prefs', {
>         "plugins.plugins_list": [{"enabled": False,
>                                   "name": "Chrome PDF Viewer"}],
>         "download": {
>             "prompt_for_download": False,
>             "default_directory": download_dir
>         }
>     })
> 
>     browser = webdriver.Chrome(path_to_chromedriver,
>                                chrome_options=chrome_options)
>     return browser

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM