Selenium c # щелкнуть точно по диапазону 1 xpath - PullRequest
0 голосов
/ 08 мая 2018

Все, что я хочу, это просто щелкнуть точно промежуток 1

Пример. Давайте перейдем на youtube.com, затем напишем что-нибудь в поисковике и, наконец, нажмем 1-й диапазон, как этот:

driver.Navigate().GoToUrl("https://youtube.com");
driver.FindElement(By.XPath("//*[@id='search']")).SendKeys("I should be so lucky");
driver.FindElement(By.XPath("//*[@id='search']")).SendKeys(Keys.Return);

А теперь я хочу нажать на первую ссылку, но этот путь:

//*[@id="description-text"]/span

показать нам 19 ссылок. Как я могу написать промежуток 1? Я пытаюсь что-то похожее на это

//*[@id="description-text"]/span[1]

но это не работает. Может ли так помочь, как выбрать только один диапазон, изменив этот xpath?

Ответы [ 3 ]

0 голосов
/ 08 мая 2018

Я бы сохранил все элементы в списке и перебрал бы по желанию, вот так:

List<WebElement> listItems = driver.findElements(By.id("description-text"));

чем Вы можете сделать следующее или выполнить все пункты для каждого цикла:

for (WebElement element :listItems) {
            //... do whatever You need to do with element
            element.findElements(By.tagName("span")); // so this is Your span, or all spans 
        }

или выберите определенный элемент:

WebElement element = listItems.get(0).findElements(By.tagName("span"));
System.out.println(element.getText());
0 голосов
/ 08 мая 2018

Попробуйте это Xpath :

//h3[contains(@class,'ytd-video-renderer')]/a[contains(@aria-label,'Kylie Minogue - I Should Be So Lucky by HCAESAR 10 years ago ')]  

Вы можете использовать этот код:

driver = new ChromeDriver();
wait =new WebDriverWait(driver, 10);
driver.manage().window().maximize();
driver.get("https://www.youtube.com/");
wait.until(ExpectedConditions.elementToBeClickable(By.cssSelector("div[id='search-input']>input")));
driver.findElement(By.cssSelector("div[id='search-input']>input")).sendKeys("I should be so lucky"+Keys.RETURN);
wait.until(ExpectedConditions.visibilityOfElementLocated(By.id("primary")));
WebElement links =  wait.until(ExpectedConditions.elementToBeClickable(By.xpath("//h3[contains(@class,'ytd-video-renderer')]/a[contains(@aria-label,'Kylie Minogue - I Should Be So Lucky by HCAESAR 10 years ago ')]")));
links.click();
0 голосов
/ 08 мая 2018

попробуйте
(// [@ ид = "Описание текст"] / диапазон) [1]

REF: Запрос XPath для получения n-го экземпляра элемента

Надеюсь, это поможет

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...