Как найти аргументы на сайте Amazon, используя webdriver в c #? - PullRequest
1 голос
/ 11 апреля 2019

Я создаю новое приложение для автоматизации, которое использует сайт Amazon, и не может найти некоторые элементы. Структура страницы меняется, поэтому она должна быть динамичной для разных учетных записей Amazon.

Это сервер нашей компании, работающий в Visual Studio 2017.

fiftElement = browseDriver.FindElement(By.ClassName("a-popover a-dropdown a-dropdown-common a-declarative"));

fiftElement.FindElement(By.XPath("//li[contains(@data-value,'RO_CR-DEFECTIVE')]")).Click();

как вы могли бы [1]: https://gyazo.com/0f4c52f4eccdd9d9b15379cf1dee7c42 Я пытаюсь нажать на определенное поле в раскрывающемся списке, где порядок блоков может измениться, и между ними нет разницы, кроме «значения данных» и текста

Я хотел бы просто найти поле «Товар неисправен» и нажать на него.

1 Ответ

0 голосов
/ 11 апреля 2019

Вы можете взять все выпадающие элементы в списке и перебрать его, чтобы проверить, содержит ли он текст Item defective, и как только вы получите текст, вы можете нажать на эту опцию.

Если есть только один раскрывающийся список с классом a-dropdown-item, то вы можете получить простой список webelement, используя:

List<WebElement> dropdownElements = browseDriver.FindElements(By.ClassName('a-dropdown-item'));

И если есть несколько раскрывающихся списков с одним и тем же classNameзатем вы можете получить этот конкретный выпадающий список, используя следующий xpath:

List<WebElement> dropdownElements = browseDriver.FindElements(By.Xpath('//div[contains(@class,'a-popover-inner')]//li[@class='a-dropdown-item']//a'));

И затем вы можете добавить логику для сопоставления текста, например:

for (int i = 0; i < dropdownElements.Count; i++) {
        if (dropdownElements.get(i).getText().contains("Item defective")) {
            dropdownElements.get(i).click();
            break;
        }
    }
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...