2017-12-04 14 views
0

최고급 python/selenium에서 항목을 구입할 수있는 자동화 된 로봇을 만들려고합니다.두 개의 검색 방법 driver.find_element_by_partial_link_text

제가 제품 페이지에 있는데 내가 구입하고 싶은 제품을 찾으려면 driver.find_element_by_partial_link_text('Flight Pant')을 사용하지만 driver.find_element_by_partial_link_text('Black')을 사용하므로 제품의 색상을 선택하고 싶습니다. Black이라는 비행 바지 대신 페이지의 첫 번째 Black 제품. 어떻게하면이 목표를 달성 할 수 있을지 생각해? 여기

내가 이것을 달성하려고 해요 사이트 링크,

http://www.supremenewyork.com/shop/all/pants

주입니다 - 제품이 주간 기초에 변화에 따라 나는 내가 할 수없는 것, 이것에 대한 XPath의를 사용할 수 없습니다입니다 사이트에 게시되기 전에 제품에 대한 xpath를 얻으십시오.

모든 조언이나 조언을 주시면 감사하겠습니다.

답변

1

XPath를 사용할 수 있지만 조작이 약간 까다 롭습니다. 는 XPath는 다음과 같습니다 페이지의 구조를 가정

driver.find_element_by_xpath('//*[contains(text(), "Flight Pant")]/../following-sibling::p/a[contains(text(), "Black")]') 

... 주 단위로 변경되지 않습니다 내 XPath를 설명하기 위해 :

//*[contains(text(), "Flight Pant")]

어떤 노드를 선택을 "Flight Pant"텍스트가 포함되어 있습니다. 모두 <a> 태그입니다.

는 DOM 모양을

/../following-sibling::p

주의 사항 :

<h1> 
    <a class="name-link" href="/shop/pants/dfkjdafkj">Flight Pant</a> 
</h1> 
<p> 
    <a class="name-link" href="/shop/pants/pvfcp0txzy">Black</a> 
</p> 

그래서 우리는 <p> 요소의 형제를 찾아 부모에게 이동해야합니다. /a[contains(text(), "Black")]

이제 텍스트 블랙이있는 <a> 태그로 이동합니다.

의 XPath에 대한 다른 대안은 정말이 아니다 이유에 의해 요소를 찾은 후 원하는 다른 방법으로 요소 (태그 이름, 클래스, 링크 텍스트 등)

+0

안녕 Mangohero1, 항상 작동하지는 않습니다. 액세서리 페이지와 모자 페이지에서 동일한 문제가 발생합니다. 왜 이런 일이 발생하는지 알고 싶습니다. 코드에 대한 조언과 안내가 많은 도움이 될 것입니다. – IAmAGodx

+0

언제든지 :) 해당 페이지 중 하나에 연결하면 어떤 문제인지 알 수 있습니다. – Mangohero1

+0

감사합니다. :) 여기 링크를 참조 해 주셔서 감사합니다. http://www.supremenewyork.com/shop/ 전체/가방 http://www.supremenewyork.com/shop/all/accessories http://www.supremenewyork.com/shop/all/hats – IAmAGodx

0

를 식별 할 유일한 방법이 없기 때문이다 링크 텍스트 "Flight pants"는 각 발견 된 결과를 반복하고 CSS 색상 속성을 추출합니다. 그것의 가짜 코드. 특정 색상 추출 웹 요소를 미세 조정해야합니다.나는 당신이 제공 한 블랙의 어깨 가방 및 해당 페이지 그것에 몇 가지 다른 항목을 찾기 위해 가방 페이지를 테스트 할 때는하지만, 대부분의 항목에 대해 잘 작동 코드를 테스트 한

elements = driver.find_elements_by_partial_link_text("Flight Pants") 

for element in elements : 
    if(element.get_css_value('color').lower() == "black") 
    element.click() 
    break 
+0

과 일치합니다. 충분하지 않습니다. 모든 요소는 CSS 값으로 검은 색으로 표시됩니다. 당신은 링크 텍스트 색상의 메소드를 호출합니다 ... 모두 검은 색입니다 : P – Mangohero1