32

次の 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']")

しかし、これはより深いネストでは機能しません

何か案は?

4

2 に答える 2

-2

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
于 2019-10-21T20:19:23.870 に答える