Нормализуйте путь к файлу с WinAPI [дубликат]

Для извлечения WebElement , который в настоящее время checked, вы можете использовать любую из следующих стратегий локатора :

  • cssSelector :

    WebElement elem = new WebDriverWait(driver, 20).until(ExpectedConditions.visibilityOfElementLocated(By.cssSelector("div.a-toggle.a-toggle--anycase#config-src-laserunits  div[id^='config-src-laserunits-']>input.a-toggle__radio[checked]")));
    
  • xpath :

    WebElement elem = new WebDriverWait(driver, 20).until(ExpectedConditions.visibilityOfElementLocated(By.xpath("//div[@class='a-toggle a-toggle--anycase' and @id='config-src-laserunits']//div[starts-with(@id, 'config-src-laserunits-')]/input[@class='a-toggle__radio' and @checked]")));
    

11
задан Community 23 May 2017 в 12:33
поделиться

3 ответа

В зависимости от того, могли ли пути быть относительными, или содержать "..", или точки соединения или пути UNC, это может быть более трудно, чем Вы, думают. Лучший способ мог бы состоять в том, чтобы использовать GetFileInformationByHandle () функция как в этом ответе.

Править: Я соглашаюсь с комментарием RBerteig, что это может стать твердым к невозможному сделать, если пути не указывают на локальный файл. Любой комментарий, как безопасно обработать этот случай, значительно ценился бы.

4
ответ дан 3 December 2019 в 06:22
поделиться

Существуют нечетные случаи. Например, "c:\windows..\data\myfile.txt" совпадает с "c:\data.\myfile.txt" и "c:\data\myfile.txt". У Вас может быть любое количество "\. \" и "\.. \" там. Вы могли бы изучить Windows API function GetFullPathName. Это могло бы сделать канонизацию для Вас.

3
ответ дан 3 December 2019 в 06:22
поделиться

Я могу предложить PathCanonicalize?

6
ответ дан 3 December 2019 в 06:22
поделиться
Другие вопросы по тегам:

Похожие вопросы: