我正在尝试使用Python和Selenium在这些按钮上单击Yes或No:
这些按钮的HTML如下所示:
我试着根据XPath进行选择:
isbnButton = browser.find_elements_by_xpath("//a[@data-toggle='haveisbn'")
这是一个朋友建议的,但是它给了我一个错误,告诉我这个字符串不是有效的XPath表达式。我对XPath几乎一无所知,在等待答案的同时,我正在做一个教程,但我希望有人能指引我正确的方向。
我最初尝试的是:
dontHaveISBN = driver.find_elements_by_class_name('btn radio btn-radio btn-primary not-active w-100')
dontHaveISBN[1].click()
但这并没有识别出任何元素。
您将如何选择和单击这些按钮?
发布于 2018-07-29 01:54:08
您可以再次尝试使用xpath (尝试从源代码中精确复制xpath ):
dontHaveISBN=driver.find_element_by_xpath('xpath_here')
dontHaveISBN.click()
发布于 2018-07-29 20:39:37
在xpath
try中,您忘记了结束的]
,这就是它无效的原因。但是这个定位器还有一个更大的问题:它也匹配NO
按钮。
在您给出多个类作为参数的class_name
尝试中,find_elements_by_class_name
只接收一个类作为参数。
data-id
属性似乎是唯一的,您可以使用它
# Yes button
driver.find_element_by_css_selector('[data-id="1"]')
# No button
driver.find_element_by_css_selector('[data-id="0"]')
# using xpath
driver.find_element_by_xpath('//a[@data-id="1"]')
或使用文本
driver.find_element_by_link_text('Yes')
driver.find_element_by_xpath('//a[text()="Yes"]')
https://stackoverflow.com/questions/51573844
复制相似问题