我没法在网页上点击按钮。
在chrome浏览器中使用硒进行python编码。
我在chrome inspect中找到了xpath。
chrome检查xpath: 注意:这似乎是exportbutton-xxxx-btnInnerEl之后的动态路径。
//*[@id="exportbutton-1102-btnInnerEl"]
我尝试了10种不同的xpath格式,并且离选择要在网站上运行报告的按钮越来越近了。我的测试用例只是要在此页面上按下按钮以导出某个日期。
这是html中的buttonn元素
<span id="exportbutton-1102-btnInnerEl" class="x-btn-inner" style="height: 23px; line-height: 23px;">Export Tickets</span>
按顺序从python输出运行错误:
submit_button = driver.find_elements_by_xpath('//*[contains(@id,’exportbutton’)]')
在python中运行错误
submit_button = driver.find_elements_by_xpath('//*[contains(@id,’exportbutton’)]')
return self.find_elements(by=By.XPATH, value=xpath) 'value': value})['value']
self.error_handler.check_response(response)
raise exception_class(message, screen, stacktrace)
selenium.common.exceptions.InvalidSelectorException: Message: invalid selector: Unable to locate an element with the xpath expression //*[contains(@id,’exportbutton’)] because of the following error:
SyntaxError: Failed to execute 'evaluate' on 'Document': The string '//*[contains(@id,’exportbutton’)]' is not a valid XPath expression.
(Session info: chrome=67.0.3396.99)
(Driver info: chromedriver=2.41.578737 (49da6702b16031c40d63e5618de03a32ff6c197e),platform=Windows NT 10.0.17134 x86_64)
谢谢
答案 0 :(得分:0)
’exportbutton’
周围的撇号无效。并且还应该将它们加倍以将其与xpath
表达式的其余部分分开
submit_button = driver.find_elements_by_xpath('//*[contains(@id ,"exportbutton")]')
答案 1 :(得分:0)
使用find_elements
将为您提供Web元素列表。并且异常跟踪显示 xpath 由于’
无效:
如果要单击按钮,可以参考以下代码:
submit_button = driver.find_elements_by_xpath("//button[contains(@id,'exportbutton')]")
submit_button[0].click()
希望这会对您有所帮助。
答案 2 :(得分:0)
此错误消息...
selenium.common.exceptions.InvalidSelectorException: Message: invalid selector: Unable to locate an element with the xpath expression //*[contains(@id,’exportbutton’)] because of the following error:
SyntaxError: Failed to execute 'evaluate' on 'Document': The string '//*[contains(@id,’exportbutton’)]' is not a valid XPath expression.
.......暗示您构造的Locator Strategy不是有效的定位器。
错误的主要原因是存在’
字符。相反,您可以在 xpath 中使用'
字符。
不过,根据您提供的 HTML 来标识文本为 Export Tickets 的元素,您可以使用以下解决方案:
submit_button = driver.find_element_by_xpath("//span[@class='x-btn-inner' and contains(.,'Export Tickets')][starts-with(@id,'exportbutton-')]")