单击Selenium的Specific按钮

时间:2016-03-10 08:30:26

标签: python selenium

我正在尝试使用Python中的Selenium单击特定按钮,但是在识别该特定按钮时遇到问题。例如,如果我在this的google页面上,并且我想让翻译栏下拉,我将如何引用该特定元素。在我的浏览器中检查它,我看到我认为它的数据是:

    <div style="clear: both;" aria-controls="uid_0" aria-expanded="false"
     class="_LJ _qxg xpdarr _WGh vk_arc" data-fbevent="fastbutton" jsaction="kx.t;
 fastbutton: kx.t" role="button" tabindex="0" data-ved="0ahUKEwiwn-6K17XLAhVLWD4KHTk9CTkQmDMILzAA">

但是,从这一点来说,我不确定如何通过函数使用find元素来引用我需要的内容才能正确调用它。

driver.find_element_by_*("?").click()

import unittest
from selenium import webdriver
from selenium.webdriver.common.keys import Keys

#comment
print ("Let's talk about Python.")


driver = webdriver.Firefox()

driver.get("http://www.google.com")

assert "Google" in driver.title

elem = driver.find_element_by_name("q")

elem.send_keys("ignominious")
elem.send_keys(Keys.RETURN)

driver.find_element_by_*("?").click()


assert "No results found." not in driver.page_source

driver.close()

3 个答案:

答案 0 :(得分:1)

您可以将css_selector与class属性

一起使用
driver.find_element_by_css_selector("._LJ._qxg.xpdarr._WGh.vk_arc").click()

class_name与任何一个类

driver.find_element_by_class_name("_LJ").click()
# or
driver.find_element_by_class_name("_qxg").click()
# or
driver.find_element_by_class_name("xpdarr").click()
# or
driver.find_element_by_class_name("_WGh").click()
# or
driver.find_element_by_class_name("vk_arc").click()

发送对元素子项的单击也可以

driver.find_element_by_class_name("vk_ard").click()

答案 1 :(得分:1)

为了更好的可维护性,您应该尝试使用ID。

使用您的示例选择器将是:

driver.find_element_by_css_selector("#uid_1 > div[role='button']").click()

答案 2 :(得分:1)

您要点击箭头吗? 如果是,那么下面的代码对我有用: -

    driver.manage().timeouts().implicitlyWait(50, TimeUnit.SECONDS);
    driver.get("https://www.google.com/");

    driver.findElement(By.name("q")).sendKeys("ignominious");
    driver.findElement(By.name("q")).sendKeys(Keys.RETURN);

    driver.findElement(By.className("vk_ard")).click();

希望它会对你有所帮助:)。