2016-05-01 4 views
0

Я работал над селеном сценарием: http://live.guru99.com/index.php/mobile.html?dir=asc&order=positionСелен: выбор элементов на основе родственного элемента тексте

и хотят, чтобы выбрать элемент "Add to Compare" для "Sony Xperia", но его не местонахождения. Я пробовал с cssSelector и xpath оба, но не смог выяснить, что я делаю неправильно.

CSS Selector:

div.category-products > ul > li:nth-child(n):contains('Sony Xperia') > div > div.actions > ul > li:nth-child(2) > a

XPath:

//h2/a[@title='Sony Xperia']/ul/li/a[text()='Add to Compare']

ПРИМЕЧАНИЕ: cssSelector размещает в Chrome, но не дает никакого результата в Firefox

ответ

1

во втором ряду часть, которую вы потеряли

//h2[a[@title='Sony Xperia']] 
/following-sibling::div[@class='actions'] 
/ul/li/a[text()='Add to Compare'] 
+0

В вашем ответе: // h2 [a [@ title = 'Sony Xperia']] вы использовали квадратные скобки перед 'a', поэтому почему это не должно быть '/' как 'a' не является атрибутом h2. Исправьте меня, поскольку я понимаю, что [] используется для атрибута для элемента. –

+0

с квадратными скобками находит h2, который имеет тег 'a' с условием. При столкновении он находит тег 'a', а затем находит от него – splash58

+0

Спасибо, сработало. Но можно исправить его и на cssSelector, так как он работает в chrome, но в firefox его не находит –

0

Это будет xpath, который будет работать повсюду.

XPath: //h2/a[@title='Sony Xperia']/../following-sibling::div[3]/ul/li[2]/a

Смотрите следующие шаги, чтобы понять его в деталях.

Шаг 1: Перейдите к починки узла элемента: //h2/a[@title='Sony Xperia'] (вы уже сделали это)

Шаг 2: Перейдите его родителя, добавляя /..

Шаг 3: Перейдите это двойников ' Действия /following-sibling::div[3] как „Действие“ класса находится на 3-й позиции из текущего местоположения

Шаг 4: Зайдите внутрь узла действия и достигают в „ул“ /ul

S теп 5: Теперь «Добавить для сравнения» существует внутри второго «LI», так что добавьте /li[2]

Шаг 6: В «Добавить для сравнения» ссылка, это будет внутри «а», так что добавьте /a

Смежные вопросы