如何通过蟒蛇硒动态ID互动?
我试图点击网页中的一个图标。这是我试图单击元素:如何通过蟒蛇硒动态ID互动?
<a class="Button ButtonIcon IconOnly DataSelector NormalState"
id="ze6402ef81ea54445aec5dab8790c781f" tabindex="0"><span class="Icon"></span>
<span class="Text"></span></a>
我没有问题,用下面的代码进行交互:
browser.find_element_by_css_selector('ze6402ef81ea54445aec5dab8790c781f').click()
的问题是,该ID是动态的,每个会话。我试图解决方法有没有成功以下代码:
browser.find_element_by_xpath("//a[span/@class='Text']").click()
和
browser.find_element_by_xpath("//a[span/@class='Icon']").click()
之后,我注意到元素需要在悬停状态,以便被点击。所以接下来,我用ActionChains尝试模拟悬停状态 - 再次,没有成功:
actions=ActionChains(browser)
element=browser.find_element_by_css_selector("//a[span/@class='Icon']")
actions.move_to_element(element).click().perform()
于是,我试图TAB通过send_keys和ActionChains元素 - 但最终通过快速地循环页,而不是一次一个元素:
actions.send_keys(Keys.TAB)
我想在发布我的问题之前进行尽职调查。任何援助表示赞赏 - 谢谢。
使用这些XPath:
//span[@class='Text']
//span[@class='Icon']
此致是格式不正确。
这里是我刚刚进入代码 - 在结果没有改变:‘点击()“browser.find_element_by_xpath(“//跨度[@类=’文字]”当我使用‘图标’,而不是‘文本’。 ,它点击页面上的不同元素。 – MrGlass
这意味着你有图标的类名多跨元素。我不知道它是与文本相同。尝试使用以下格式来选择具有类值的第二个跨度:“(// span [@ class ='Text])[2]” – JOberloh
我输入了以下内容:browser.find_element_by_xpath(“(// span [@class ='文本])[2]“)。我收到此错误:SyntaxError:该表达式不是一个合法的表达式。 – MrGlass
正如你所说,你没有与下面的代码行的一个问题:
browser.find_element_by_css_selector('ze6402ef81ea54445aec5dab8790c781f').click()
但这里唯一的问题是,id
是动态的,所以我们可以使用class
属性构建一个独特cssSelector
或独特xpath
如下:
-
cssSelector
:driver.findElement(By.cssSelector("div.Button.ButtonIcon.IconOnly.DataSelector.NormalState"));
-
xpath
:driver.findElement(By.xpath("//div[@class='Button ButtonIcon IconOnly DataSelector NormalState']"));
您可以更新与一对夫妇的ID的示例值的问题(例如, 'ze6402ef81ea54445aec5dab8790c781f')哪些产生? – DebanjanB
#zfaf974d8e18d44cc9bfdd942643b200d,#z134860f30a964156aea8d63f98a10cee,#z978fad99632e4f44a54e67a3cae4c935 – MrGlass
请张贴的链接页面。我们需要更多周围的HTML来给出答案。 – JeffC